爲什麼,如果我命令發送到DeviceIoControl
:с++把字節數組功能
byte lpInBuffer[44] = { 0x2C, 0x00, 0x00, 0x00, 0x01... };
byte lpOutBuffer[88];
BOOL result = DeviceIoControl(open, 0x0004D004, lpInBuffer, sizeof(lpInBuffer), &lpOutBuffer, sizeof(lpOutBuffer), 0x00000000, 0x00000000);
err = GetLastError(); //
cout << "result:" << result << ", err: " << err << "\n";
結果是正確的!
但如果我這樣做,我得到的結果是一個錯誤:
void putMessage(HANDLE handle, int type, int output_len, byte message[]) {
byte* lpOutBuffer = new byte[output_len];
byte* lpInBuffer = message;
for (int i = 0; i < sizeof(lpInBuffer); i++) {
cout << lpInBuffer[i];
}
BOOL result = DeviceIoControl(handle, type, lpInBuffer, sizeof(lpInBuffer), &lpOutBuffer, sizeof(lpOutBuffer), 0x00000000, 0x00000000);
int err = GetLastError();
cout << "result:" << result << ", err: " << err << "\n";
for (int i = 0; i < sizeof(lpOutBuffer); i++) {
cout << lpOutBuffer[i];
}
cout << "\n\n";
}
putMessage(open, 0x0004D004, 88, new byte[44]{ 0x2C, 0x00, 0x00, 0x00, 0x01... });
嗨!爲了清晰起見,我添加了以下代碼:「cout <<」\ n「<< sizeof(message)<<」\ n「<< \t \t sizeof(lpInBuffer)<<」\ n「<< \t \t output_len <<」 \ n」個<< \t \t的sizeof(lpOutBuffer)<< 「\ n」 個;'和我得到的大小的字節數組爲8:'8 8',但字節數組'message' len爲44 – lampa