阅读:1124回复:0
求救于Driverwork高手............
Interrupt Transfer + Control transfer(for Get data)
己使用CATC analyzer验证每2ms , Interrupt IN 一次 且control transfer正确运行, 但是为何无法取得Device端的正确资料? BuildInterruptTransfer传递的Buffer不是device回传的资料? 那个是Interrupt IN回传的Buffer? 附上Driverwork片断源码 NTSTATUS Device::DeviceControl(KIrp I) { NTSTATUS status; PVOID pBuffer = I.IoctlBuffer(); ULONG dwOutputBufferSize = I.IoctlOutputBufferSize(); ULONG dwInputBufferSize = I.IoctlInputBufferSize(); ULONG_PTR nInfo = NULL; switch (I.IoctlCode()) { case IOCTL_WAITINT: { PUCHAR pBuffer = PUCHAR(I.IoctlBuffer()); for(int i = 0; i<16 ;i++) *(pBuffer+i) = *(pIntBuff+i); I.Information() = 16; break; } } ................... } NTSTATUS KUsbInterruptTransfer::StartPolling( PVOID Buffer, ULONG Length, USB_INTERRUPT_CALLBACK pfnOnInterrupt, PVOID pClientContext ) { .... m_InterruptPipe->BuildInterruptTransfer( Buffer, Length, m_bShortOk, NULL, m_pIntUrb ); status = m_InterruptPipe->SubmitUrb( m_KIrp, m_pIntUrb, LinkTo(InterruptTransferComplete), pCompInfo ); return status; } |
|
最新喜欢:![]() |