我正在尝试使用 mpusbapi.h 中定义的以下函数
HANDLE(*MPUSBOpen)(DWORD instance, //Input
PCHAR pVID_PID, //Input identifier
PCHAR pEP, //Input pipe
DWORD dwDir, //Input
DWORD dwReserved); //Input <Future Use>
DWORD(*MPUSBWrite)(HANDLE handle, //Input
PVOID pData, //Input
DWORD dwLen, //Input
PDWORD pLength, //Output
DWORD dwMilliseconds); //Input
当我在我的 test.cpp 中使用这些时,它看起来像;
HANDLE LACOutpipe;
pipeName="\\MCHP_EP";
PCHAR VidPid="vid_04d8&pid_fc5f";
BYTE bufData[3];
DWORD buflen=sizeof(bufData);
DWORD bufProcessed;
LACOutpipe=MPUSBOpen(0, //only one device connected, dont need to check for multiple
VidPid, //this is the device driver vid and pid
pipeName, //the pipe to write to?
MP_WRITE, //MP_WRITE is just 1
0); //not supported yet?
cout<<LACOutpipe<<endl;
//now use LACOutpipe handle to write
cout<<MPUSBWRITE(LACOutpipe, //the handle to write to
bufData, //BYTE array with data to be sent
bufLen, //length of bufData
&bufProcessed, //bytes processed
10000) //10 second timeout
<<endl;
cout<<GetLastError()<<endl;
控制台输出为:
FFFFFFFF
0
6
Press any key to continue...
MPUSBWrite 返回 0 表示写函数失败。错误代码 6 对应于 ERROR_INVALID_HANDLE:句柄无效。
有谁知道为什么?我有一种预感,pipeName
但不知道如何检查/解决这个问题。