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
これを確認/修正する方法がわかりません。