gpt4 book ai didi

C++将字节数组放入函数

转载 作者:太空宇宙 更新时间:2023-11-04 13:02:59 24 4
gpt4 key购买 nike

为什么如果我向 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... });

最佳答案

在您的第一个代码示例中,您正在处理 array 类型的变量,并且这种类型的 sizeof 是(已知的编译时间常量)大小以具有 CHAR_BITS 位的元素为单位的数组。

在第二个代码示例中,您不是在处理数组类型的变量,而是处理指针 类型的变量。指针的大小与其可能指向的数组的大小(可能在编译时未知)无关。

要解决这个问题,您还需要将 message 大小传递给您的函数。在您的函数中使用该大小以及输出缓冲区大小,而不是那些 sizeof 表达式。

关于C++将字节数组放入函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43446676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com