"новичок в C++, так что я все еще пытаюсь прогнать код, так что извините за глупость!
Я вношу изменения в какой-то существующий код.
Старый код вызывает функцию ниже, где cbDataSize определяется sizeof (MyStruct)
BOOL WINAPI WriteMsgQueue(HANDLE hMsgQ, LPVOID lpBuffer, DWORD cbDataSize, DWORD dwTimeout, DWORD dwFlags);
Изменение, которое я сделал, это добавить еще один Struct в Struct MyStruct, чтобы он теперь выглядел так:
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);
Теперь я ERROR_INSUFFICIENT_BUFFER
System Error 122
- ERROR_INSUFFICIENT_BUFFER
при WriteMsgQueue()
.
Любая помощь оценивается, как я рассчитываю правильный размер?
Вероятно, очередь не была выделена с достаточным пространством для хранения вашей более крупной структуры. Вам может потребоваться найти, где старый код создает очередь (через CreateMsgQueue()
), и посмотреть на MSGQUEUEOPTIONS
структуру MSGQUEUEOPTIONS
. Эта структура имеет поле cbMaxMessage
которое определяет максимальный размер одного сообщения. Возможно, вам придется увеличить это. Также проверьте другие поля, такие как cbSize
, dwMaxMessages
и т.д.