2017-03-28 6 views
0

自動featureReport = hidDevice-> CreateFeatureReport(6)。 自動dataWriter = REF新しいDataWriter()。使用データ書き込み:: DetachBufferエラー(WinRTのC++)発生

Array<UINT8>^buff = ref new Array<UINT8>(6); 

buff[0] = (uint8)featureReport->Id; 
buff[1] = 0xe;//update mode 
buff[2] = 0; 
buff[3] = 0; 
buff[4] = 0; 
buff[5] = 0; 

dataWriter->WriteBytes(buff); 
featureReport->Data = dataWriter->DetachBuffer(); 

create_task(hidDevice->SendFeatureReportAsync(featureReport)) 
    .then([this](task<uint32> bytesWrittenTask) 
{ 
    auto x = bytesWrittenTask.get(); // If exception occured, let an exception flow down the task chain so it can be caught 

    //MessageDialog^ msg = ref new MessageDialog(x.ToString()); 
}); 

このコードは、HIDデバイスにコマンドを送信する必要がありますが、ここでエラーfeatureReport->データ= dataWriter-> DetachBuffer()の成功の後、HIDドライバにアクセスすることです。 エラーメッセージ:HRESULT:0x80070057がパラメータエラー

+0

コードが正しいと思われます。私はあなたのHIDデバイスの詳細を知っていないので、私はいくつかのモックデータでテストし、私は 'dataWriter-> DetachBuffer()'を呼び出すエラーはありません。だから私は問題があなたが投稿したコードにないかもしれないと思います。また、HIDの開発のために、あなたは[カスタムHIDデバイスのサンプル](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CustomHidDeviceAccess)を参照してもよいです。 –

+0

ご返信ありがとうございます。私のプログラムは、あなたが私にHIDドライバに関するテストコードを与えることができ、カスタムHIDデバイスのサンプルを参照してくださいです。私は自分のコードと比較する – Sniper

答えて

0

おそらく、無効なバッファ長をヒットしています。書き込む前にバッファの長さを取得してください。

(pseudo code) 
FeatureReport report = hidDevice->GetFeatureReport(reportId) 
Array<UINT8>^buff = ref new Array<UINT8>(report.Data.Length); 
関連する問題