阅读:1617回复:3
怎么从usb口读取数据?
怎么能通过usb口读数据(假设usb的驱动已经装好了),应该是通过createfile,readfile函数吧?但是createfile函数的第一个参数是什么?应该怎么写?最好能举个例子解释一下
|
|
最新喜欢:![]() |
沙发#
发布于:2003-07-03 10:30
那怎么知道自己的GUID呢?
|
|
板凳#
发布于:2003-07-01 11:26
下面是个通过guid打开设备的完整历程,里面的guid要改成你自己的:
HANDLE open_dev() { PSP_INTERFACE_DEVICE_DETAIL_DATA functionClassDeviceData = NULL; SP_INTERFACE_DEVICE_DATA deviceInfoData; ULONG predictedLength = 0; ULONG requiredLength = 0; HANDLE hOut = INVALID_HANDLE_VALUE; HDEVINFO hardwareDeviceInfo = NULL; PUSB_DEVICE_DESCRIPTOR UsbDevices; deviceInfoData.cbSize = sizeof (SP_INTERFACE_DEVICE_DATA); UsbDevices = (PUSB_DEVICE_DESCRIPTOR)malloc (sizeof (USB_DEVICE_DESCRIPTOR)); if (NULL == UsbDevices) { SetupDiDestroyDeviceInfoList (hardwareDeviceInfo); return hOut; } hardwareDeviceInfo = SetupDiGetClassDevs( (LPGUID)&GUID_CLASS_D12_BULK, NULL, // Define no enumerator (global) NULL, // Define no (DIGCF_PRESENT | // Only Devices present DIGCF_INTERFACEDEVICE)); if(hardwareDeviceInfo == NULL) { SetupDiDestroyDeviceInfoList (hardwareDeviceInfo); if(UsbDevices) free(UsbDevices); } SetupDiEnumDeviceInterfaces (hardwareDeviceInfo, 0, // We don\'t care about specific PDOs (LPGUID) &GUID_CLASS_D12_BULK, 0, &deviceInfoData); SetupDiGetDeviceInterfaceDetail( hardwareDeviceInfo, &deviceInfoData, NULL, // probing so no output buffer yet 0, // probing so output buffer length of zero &requiredLength, NULL); // not interested in the specific dev-node predictedLength = requiredLength; if(predictedLength) { functionClassDeviceData = (PSP_INTERFACE_DEVICE_DETAIL_DATA)malloc (predictedLength); functionClassDeviceData->cbSize = sizeof (SP_INTERFACE_DEVICE_DETAIL_DATA); } // // Retrieve the information from Plug and Play. // if (!SetupDiGetDeviceInterfaceDetail ( hardwareDeviceInfo, &deviceInfoData, functionClassDeviceData, predictedLength, &requiredLength, NULL)) { SetupDiDestroyDeviceInfoList (hardwareDeviceInfo); if(functionClassDeviceData) free(functionClassDeviceData); if(UsbDevices) free(UsbDevices); return hOut; } hOut = CreateFile ( functionClassDeviceData->DevicePath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, // no SECURITY_ATTRIBUTES structure OPEN_EXISTING, // No special create flags 0, // No special attributes NULL); // No template file SetupDiDestroyDeviceInfoList (hardwareDeviceInfo); free(functionClassDeviceData); if(UsbDevices) free(UsbDevices); return hOut; } |
|
地板#
发布于:2003-07-01 11:24
第一个参数是设备句柄吧
如果你的设备是通过guid实现的,那就用几个setupdiXXX函数获得设备名的路径,然后用creatfile打开设备得到句柄 如果是自己命名的,那就用设备名可以直接用creatfile打开。 |
|