• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 模擬技術 > 設計應用 > USB設備驅動程序的設計

    USB設備驅動程序的設計

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

      9)最后選擇完成并確認生成新的項目信息,向導程序就會在usbdio目錄中生成一個名為USBDIO的項目文件,其中包括了ISP1581框架、模塊及部分源代碼。

    本文引用地址:http://www.czjhyjcfj.com/article/94605.htm

      USB設備的編程

      在使用DriverWizard生成框架、模塊及部分程序源代碼后,開發者只需完成圖2中三個控制代碼所對應的三個功能模塊的編程:模塊USBDIO_IOCTL_ID_CODE_Handler的功能是從控制端點0讀取數據,模塊USBDIO_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;

      status=m_Lower.SubmitUrb(pUrb,NULL,NULL,0);

      delete pUrb;

      }

      return status;

      }



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 辽宁省| 吉林市| 黄石市| 和林格尔县| 城固县| 澄江县| 德兴市| 衡南县| 张家川| 沭阳县| 沧源| 承德市| 方正县| 苏尼特左旗| 应用必备| 左贡县| 梧州市| 香河县| 广宁县| 南汇区| 汉阴县| 钦州市| 德江县| 沐川县| 博湖县| 镶黄旗| 太和县| 五河县| 辽阳县| 出国| 凭祥市| 同德县| 合江县| 惠安县| 彰化市| 广昌县| 六枝特区| 宁都县| 武义县| 鹤壁市| 余姚市|