Site icon EfmSoft

Что означает код HRESULT 0xC00E0023 (MQ_ERROR_SECURITY_DESCRIPTOR_TOO_SMALL)?

 
Предыдущий Следующий
MQ_ERROR_SENDERID_BUFFER_TOO_SMALL MQ_ERROR_CANNOT_IMPERSONATE_CLIENT

MQ_ERROR_SECURITY_DESCRIPTOR_TOO_SMALL

Что означает MQ_ERROR_SECURITY_DESCRIPTOR_TOO_SMALL

MQ_ERROR_SECURITY_DESCRIPTOR_TOO_SMALL — Буфер, переданный MQGetQueueSecurity, слишком мал для полного дескриптора безопасности очереди. Сначала нужно получить достаточный размер и только затем разбирать ACL.

MQGetQueueSecurity возвращает бинарный SECURITY_DESCRIPTOR переменного размера. Этот код означает, что вызывающая сторона подготовила недостаточно памяти для полного descriptor; проверять ACL до успешного получения всей структуры бессмысленно.

Что проверить

  • Используйте требуемый размер, возвращённый MQGetQueueSecurity, чтобы выделить новый буфер.
  • Повторите чтение и только после успешного получения полного SECURITY_DESCRIPTOR разбирайте owner, group, DACL и ACE.
  • Не путайте этот код с MQ_ERROR_ILLEGAL_SECURITY_DESCRIPTOR: здесь существующий descriptor может быть полностью корректным, проблема только в размере выходного буфера.

Как подтвердить исправление

Проверка должна получить полный дескриптор, успешно разобрать его стандартными Windows API и повторить чтение с заведомо малым буфером как отрицательный тест.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.

Exit mobile version