免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2241 | 回复: 2

读写USB出错 [复制链接]

论坛徽章:
0
发表于 2009-11-20 15:49 |显示全部楼层
10可用积分
CreateFile成功,WriteFile时失败,GetLastError值为6,谢谢
代码如下:
GUID HidGuid;
HDEVINFO hDevInfoSet;
DWORD MemberIndex = 0;
BOOL Result;
SP_DEVICE_INTERFACE_DATA DevInterfaceData;
DWORD RequiredSize;
PSP_DEVICE_INTERFACE_DETAIL_DATA pDevDetailData;

HANDLE hDevHandle;
hReadHandle = INVALID_HANDLE_VALUE;
hWriteHandle = INVALID_HANDLE_VALUE;
HIDD_ATTRIBUTES DevAttributes;

DevInterfaceData.cbSize = sizeof(DevInterfaceData);
DevAttributes.Size = sizeof(DevAttributes);
HidD_GetHidGuid(&HidGuid);
hDevInfoSet = SetupDiGetClassDevs(&HidGuid, NULL, NULL, DIGCF_DEVICEINTERFACE | DIGCF_PRESENT);
while (1)
{
Result = SetupDiEnumDeviceInterfaces(hDevInfoSet, NULL, &HidGuid, MemberIndex, &DevInterfaceData);
if (!Result)
break;
MemberIndex++;

Result = SetupDiGetDeviceInterfaceDetail(hDevInfoSet, &DevInterfaceData, NULL, NULL, &RequiredSize, NULL);
pDevDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(RequiredSize);
if (pDevDetailData == NULL)
{
SetupDiDestroyDeviceInfoList(hDevInfoSet);
return;
}

pDevDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
Result = SetupDiGetDeviceInterfaceDetail(hDevInfoSet, &DevInterfaceData, pDevDetailData, RequiredSize, NULL, NULL);
MyDevPathName = pDevDetailData->DevicePath;
free(pDevDetailData);
if (Result == FALSE)
continue;

hDevHandle = CreateFile(MyDevPathName, NULL, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hDevHandle != INVALID_HANDLE_VALUE)
{
Result = HidD_GetAttributes(hDevHandle, &DevAttributes);
CloseHandle(hDevHandle);
if (Result == FALSE)
continue;
if ((DevAttributes.VendorID == 0x516) && (DevAttributes.ProductID == 0x511B))
{
MyDevFound = TRUE;
hWriteHandle = CreateFile(MyDevPathName, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
//MyDevPathName为:\\?\hid#vid_0516&pid_511b&mi_03#7&173fc2f5&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
if (hWriteHandle != INVALID_HANDLE_VALUE)
{
PortReadyWrite = true;
                                    unsigned char check_link[] = "HELLOWORLD";
                                    BOOL result;
                                    OVERLAPPED overlapped;
                                    DWORD number;
                                    overlapped.Offset = 0;
                                    overlapped.OffsetHigh = 0;
                                    result = WriteFile(hWriteHandle, check_link, sizeof(check_link), &number, &overlapped);
                                    }
                            }
                    }
            }
            SetupDiDestroyDeviceInfoList(hDevInfoSet);
}

论坛徽章:
0
发表于 2009-11-20 15:51 |显示全部楼层
详细错误信息?

论坛徽章:
0
发表于 2009-11-20 16:12 |显示全部楼层
hWriteHandle = CreateFile(MyDevPathName, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
之后调用GetLastError返回0,成功
但是在result = WriteFile(hWriteHandle, check_link, sizeof(check_link), &number, &overlapped);
后调用GetLastError返回6:句柄无效
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP