<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > USB設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)

          USB設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)

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

            設(shè)備的編程

          本文引用地址:http://www.ex-cimer.com/article/106464.htm

            在使用DriverWizard生成框架、模塊及部分程序源代碼后,開發(fā)者只需完成圖2中三個(gè)控制代碼所對應(yīng)的三個(gè)功能模塊的編程:模塊DIO_IOCTL_ ID_CODE_Handler的功能是從控制端點(diǎn)0讀取數(shù)據(jù),模塊DIO_IOCTL_ TEST_COMMAND_Handler的功能是向控制端點(diǎn)0發(fā)送一個(gè)控制命令,模塊USBDIO_IOCTL_DMA_COMMAND _Handler的功能是向控制端點(diǎn)0發(fā)送一個(gè)要求USB設(shè)備進(jìn)行DMA傳輸?shù)目刂泼睿旅媸堑谝粋€(gè)模塊的編程實(shí)例。

            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();

            //設(shè)置讀取的數(shù)據(jù)個(gè)數(shù)

            pUrb=m_Lower.BuildVendorRequest(

            (PUCHAR)I.IoctlBuffer(),//驅(qū)動(dòng)程

            序存放讀取的數(shù)據(jù)的內(nèi)存區(qū)

            numData,//wLength,讀取的數(shù)據(jù)個(gè)數(shù)

            0,

            0x0c,//bRequest 0,//wValue

            TRUE,//input

            TRUE,

            NULL,

            0x0472,//wIndex,傳輸?shù)焦碳绦?/p>

            的讀數(shù)命令碼

            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包含了應(yīng)用程序下傳的IRP內(nèi)容,包括命令或數(shù)據(jù)等參數(shù),函數(shù)BuildVendorRequest用來分配并初始化一個(gè)用于廠商請求的URB(USB Request Block),該URB將作為下傳IRP的一個(gè)參數(shù),通過函數(shù)SubmitUrb發(fā)送給總線,以便完成與硬件的通信。



          關(guān)鍵詞: NXP USB 驅(qū)動(dòng)程序

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();