HID デバイス レポートのコレクションから返されるデータを定義する次の構造体があります。
struct DevInfo {
char unknown[0x40];
string name;
char unknown2[0x240];
};
現在は不完全ですが、それは私の質問とは関係ありません。memcpy
以前は、次のように、char 配列からデータをコピーするために使用して、この構造体のインスタンスを生成していました。
// get data from HID device
unsigned char *response = sendCommand(DEV_REPORT);
// Copy to struct
DevInfo *info;
memcpy(&info, &response[0], sizeof(response));
// Output name
cout << "Name: " << info->name << "\n";
これはうまくいきましたが、明らかにすべきではないことをしていた (関数から char 配列への参照を返す) ことを除いては。そのため、調査した後、より安全なアプローチに切り替えましたが、構造体にデータを入力するためにstd::vector<unsigned char>
使用できなくなりました。memcpy
std::vector<DevInfo>
の代わりにを使用するようにアドバイスされた人もstd::vector<unsigned char>
いましたが、問題は、HID デバイスから取得できるレポートがいくつかあるため、同じ関数 ( ) を使用してさまざまな構造体に入力できるようにする必要があることsendCommand
です。
std::vector<unsigned char>
myから my DevInfo
structにバイナリ データを取得する適切な方法は何ですか?