新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > USB設備驅動程序設計

        USB設備驅動程序設計

        作者:陳新忠 中國電子科技集團公司第二十研究所 時間:2010-03-02 來源:電子產品世界 收藏

          設備的編程

        本文引用地址:http://www.104case.com/article/106464.htm

          在使用DriverWizard生成框架、模塊及部分程序源代碼后,開發者只需完成圖2中三個控制代碼所對應的三個功能模塊的編程:模塊DIO_IOCTL_ ID_CODE_Handler的功能是從控制端點0讀取數據,模塊DIO_IOCTL_ TEST_COMMAND_Handler的功能是向控制端點0發送一個控制命令,模塊USBDIO_IOCTL_DMA_COMMAND _Handler的功能是向控制端點0發送一個要求USB設備進行DMA傳輸的控制命令,下面是第一個模塊的編程實例。

          NTSTATUS USBDIODevice::USBDIO

          _IOCTL_ID_CODE_Handler(KIrp I)

          {

          NTSTATUS status =STATUS_

          SUCCESS;

          t << "Entering USBDIODevice

          ::USBDIO _IOCTL_ID_ CODE_

          Handler, " << I << EOL;

          PURB pUrb;

          ULONG numData;

          numData=*(PUCHAR)I.IoctlBuffer();

          //設置讀取的數據個數

          pUrb=m_Lower.BuildVendorRequest(

          (PUCHAR)I.IoctlBuffer(),//驅動程

          序存放讀取的數據的內存區

          numData,//wLength,讀取的數據個數

          0,

          0x0c,//bRequest 0,//wValue

          TRUE,//input

          TRUE,

          NULL,

          0x0472,//wIndex,傳輸到固件程序

          的讀數命令碼

          URB_FUNCTION_VENDOR_ENDPOINT,

          NULL

          );

          if(pUrb==NULL)

          {

          I.Information() =0;

          status=STATUS_INSUFFICIENT_

          RESOURCES;

          }

          else

          {

          I.Information() =numData;

          tatus=m_Lower.SubmitUrb(pUrb,NULL,

          NULL,0);

          delete pUrb;

          }

          return status;

          }

          對象I包含了應用程序下傳的IRP內容,包括命令或數據等參數,函數BuildVendorRequest用來分配并初始化一個用于廠商請求的URB(USB Request Block),該URB將作為下傳IRP的一個參數,通過函數SubmitUrb發送給總線,以便完成與硬件的通信。



        關鍵詞: NXP USB 驅動程序

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 黄冈市| 梅州市| 汕头市| 维西| 湄潭县| 福州市| 竹北市| 贺州市| 板桥市| 祁门县| 南京市| 昂仁县| 黑水县| 泾源县| 屏东县| 赫章县| 仁寿县| 汶上县| 洛扎县| 宿松县| 宁波市| 印江| 梧州市| 高邑县| 青浦区| 景东| 祁门县| 北川| 扬州市| 呼和浩特市| 尤溪县| 宜宾市| 大庆市| 叶城县| 营口市| 平和县| 莱西市| 绥宁县| 崇阳县| 进贤县| 侯马市|