阅读:1401回复:3
请教D12用VC编程不能读写的问题自己编写了D12驱动,用USB调试工具使用端点2能够进行数据读写,说明驱动没有问题。 但在VC6下编程进行读写,却总是不行。Creatfile能返回设备的句柄,接着就不行了。不管是用writefile还是DeviceIoControl 都不对。用DeviceIoControl ,bResult总是返回FALSE。用writefile,调试状态单步执行总停在writefile这句,不再向下执行。 代码如下: int main(int argc, char* argv[]) { BOOL b= write_usbport("PIPE2"); return 0; } write_usbport(char *filename) { BOOLEAN bResult = FALSE; ULONG nBytes = 0; UINT uiLength=1; HANDLE h=INVALID_HANDLE_VALUE; unsigned char * IOBuffer; unsigned char outValue=0; unsigned char inValue=0; IOBuffer = (unsigned char *)malloc (64); IOBuffer[0]=32; outValue=32; h = open_file(filename); //子函数中有createfile,能成功返回句柄 if ( h != INVALID_HANDLE_VALUE ) { // bResult = DeviceIoControl (h, // IOCTL_D12_BULK_WRITE, // &inValue, // 1, // &outValue, // 1, // &nBytes, // NULL); // bResult = WriteFile(h, // IOBuffer, // uiLength, // &nBytes, // NULL); if (bResult) return TRUE; else return FALSE; } return FALSE; } |
|
沙发#
发布于:2007-11-18 18:20
就那些代码,编译能通过么?
|
|
板凳#
发布于:2007-11-16 15:52
是不是因为没有打开端点造成的?
Createfile的代码如下: if ( !GetUsbDeviceFileName( (LPGUID) &GUID_CLASS_D12_BULK, completeDeviceName) ) { return INVALID_HANDLE_VALUE; } strcat (completeDeviceName, "\\" ); strcat (completeDeviceName, filename ); h = CreateFile(completeDeviceName, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_EXISTING, // FILE_FLAG_OVERLAPPED, 0, NULL); |
|
地板#
发布于:2007-11-16 15:49
自己顶
|
|