gpt4 book ai didi

c++ - 系统错误 122 - 调用 WriteMsgQueue() 时出现 ERROR_INSUFFICIENT_BUFFER

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

我是 C++ 的新手,所以仍在努力了解代码,很抱歉听起来很愚蠢!

我正在对一些现有代码进行更改。

旧代码调用以下函数,其中 cbDataSize 由 sizeof(MyStruct) 确定

BOOL WINAPI WriteMsgQueue(HANDLE hMsgQ, LPVOID lpBuffer, DWORD cbDataSize, DWORD dwTimeout, DWORD dwFlags);

我所做的更改是在 Struct MyStruct 中添加另一个 Struct,这样它现在看起来像:

struct MyInnerStruct {
char myarray[20][256];
long mycount;
};

struct MyStruct {
long value1;
long value2;
MyInnerStruct inner;
};

下面是对 WriteMsgQueue 的调用:

HANDLE requestQueue;
MyStruct myData;
DWORD timeout = 12000;

WriteMsgQueue(requestQueue, &myData, sizeof(myData), timeout, 0);

当调用 WriteMsgQueue() 时,我现在收到 System Error 122 - ERROR_INSUFFICIENT_BUFFER

对我如何计算正确尺寸有任何帮助吗?

最佳答案

队列可能没有分配足够的空间来容纳更大的结构。您可能需要找到旧代码创建队列的位置(通过 CreateMsgQueue())并查看 MSGQUEUEOPTIONS正在传入的结构。此结构有一个 cbMaxMessage 字段,它确定单个消息的最大大小。您可能需要增加它。还要检查其他字段,如 cbSizedwMaxMessages 等。

关于c++ - 系统错误 122 - 调用 WriteMsgQueue() 时出现 ERROR_INSUFFICIENT_BUFFER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20908707/

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