新聞中心

        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 驅動程序

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 东光县| 淮安市| 泌阳县| 措勤县| 锦屏县| 桑植县| 清原| 巴马| 交口县| 雅江县| 阿拉尔市| 清徐县| 利川市| 汝南县| 宜春市| 上高县| 汪清县| 西丰县| 石嘴山市| 永登县| 汉川市| 镇赉县| 维西| 甘德县| 临武县| 辛集市| 吉隆县| 五指山市| 喜德县| 临漳县| 顺昌县| 和林格尔县| 丰城市| 马山县| 板桥市| 平陆县| 荆门市| 清丰县| 巴青县| 漾濞| 霍林郭勒市|