Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Ошибка STATUS_INVALID_INFO_CLASS при использовании NTQueryObject в Delphi на Windows XP: Поиск решения

Delphi , Синтаксис , Справочник по API-функциям

Ошибка STATUS_INVALID_INFO_CLASS при использовании NTQueryObject в Delphi на Windows XP

При работе с функциями операционной системы Windows, разработчики могут сталкиваться с различными ошибками, особенно при использовании устаревших версий программного обеспечения. Одной из таких ошибок является STATUS_INVALID_INFO_CLASS, которая может возникнуть при попытке использования функции NTQueryObject в среде разработки Delphi на операционной системе Windows XP.

Описание проблемы

Пользователь столкнулся с ошибкой STATUS_INVALID_INFO_CLASS при вызове функции NTQueryObject в коде на Delphi. Ошибка возникает на Windows XP, в то время как на более новых версиях операционной системы, таких как Windows 8, код работает корректно. Ошибка связана с использованием класса информации ObjectNameInformation, который, по всей видимости, не является валидным для данной версии Windows.

Пример кода

Вот пример кода, в котором используется функция GetObjectInfo, вызывающая NTQueryObject для получения информации об объекте:

function GetObjectInfo(hObject: cardinal; objInfoClass: OBJECT_INFORMATION_CLASS): LPWSTR;
var
  pObjectInfo: POBJECT_NAME_INFORMATION;
  HDummy: THandle;
  dwSize: DWORD;
begin
  Result := nil;
  dwSize := sizeof(OBJECT_NAME_INFORMATION);
  pObjectInfo := AllocMem(dwSize);
  HDummy := NTQueryObject(hObject, objInfoClass, pObjectInfo, dwSize, @dwSize);
  // ... (дальше следует код обработки результатов)
end;

Причины ошибки

Ошибка STATUS_INVALID_INFO_CLASS может быть вызвана несколькими причинами:

  1. Неправильное определение классов информации, используемых в NTQueryObject.
  2. Изменения в API Windows, которые могли произойти между версиями операционных систем.
  3. Ошибки в коде, связанные с управлением памятью или неправильным использованием функций Windows.

Рекомендации по решению

Использование правильных размеров и выравнивания

  • Убедитесь, что используете правильные размеры и выравнивание для записей, чтобы они соответствовали требованиям операционной системы.

```pascal {$R *.res} {$APPTYPE CONSOLE} {$DEFINE STRSAFE_NO_DEPRECATE} {$DEFINE STRSAFE_ANSI} {$DEFINE STRSAFE_UNICODE} {$RANGEDEP SAFEOFF} {$RANGECHECK ON} {$MODE DELPHI} {$ALIGN 8} {$IMPLICITBIGSTACK ON} {$AUTOREALIGN} {$OPTIMIZATION ON} {$OPTIMIZECONSTREF OFF} {$ERRORSTACK 100} {$ELSE} {$ELSEIFDEF} {$ELSEIFDEF} {$ELSEIFDEF} {$IFDEF} {$IFNDEF} {$IF} {$ENDIF} {$ENDIF} {$IFDEF WINDOWS_32} {$DEFINE STRSAFE_NO_MBCS} {$DEFINE STRSAFE_NO_CARRIAGE_RETURN_CHECK} {$DEFINE STRSAFE_NO_CP_NEUTRAL} {$DEFINE STRSAFE_NO_ILLEGAL_CHARS} {$DEFINE STRSAFE_NO_UNICODE} {$DEFINE STRSAFE_GLOBAL_DEFINES} {$DEFINE STRSAFE_GLOBAL_DEFINES} {$DEFINE STRSAFE_GLOBAL_DEFINES} {$DEFINE STRSAFE_GLOBAL_DEFINES} {$DEFINE STRSAFE_GLOBAL_DEFINES} {$DEFINE STRSAFE_GLOBAL_DEFINES} {$DEFINE STRSAFE_GLOBAL_DEFINES} {$DEFINE STRSAFE_GLOBAL_DEFINES} {$DEFINE STRSAFE_GLOBAL_DEFINES} {$DEFINE STRSAFE_GLOBAL_DEFINES} {$DEFINE STRSAFE_NO_DEPRECATE} {$DEFINE STRSAFE_NO_CP_NEUTRAL} {$DEFINE STRSAFE_NO_ILLEGAL_CHARS} {$DEFINE STRSAFE_NO_APPNLS} {$DEFINE STRSAFE_NO_CALLOUTS} {$DEFINE STRSAFE_NO_CP1200} {$DEFINE STRSAFE_NO_CARRIAGE_RETURN_CHECK} {$DEFINE STRSAFE_NO_CP90} {$DEFINE STRSAFE_NO_CP932} {$DEFINE STRSAFE_NO_SARAWAN} {$DEFINE STRSAFE_NO_SJIS} {$DEFINE STRSAFE_NO_EBCDIC} {$DEFINE STRSAFE_NO_CP1381} {$DEFINE STRSAFE_NO_CP16} {$DEFINE STRSAFE_NO_CP77} {$DEFINE STRSAFE_NO_CP80} {$DEFINE STRSAFE_NO_CP862} {$DEFINE STRSAFE_NO_CP864} {$DEFINE STRSAFE_NO_CP950} {$DEFINE STRSAFE_NO_CP10000} {$DEFINE STRSAFE_NO_CP20127} {$DEFINE STRSAFE_NO_CP20261} {$DEFINE STRSAFE_NO_CP20269} {$DEFINE STRSAFE_NO_CP33554432} {$DEFINE STRSAFE_NO_CPFS} {$DEFINE STRSAFE_NO_LATN} {$DEFINE STRSAFE_NO_TIS620} {$DEFINE STRSAFE_NO_UTF8} {$DEFINE STRSAFE_NO_EBCDICCPTABLE} {$DEFINE STRSAFE_NO_CPUTF8} {$DEFINE STRSAFE_NO_SQL_ASCII_CONVERSION} {$DEFINE STRSAFE_NO_CP28591} {$DEFINE STRSAFE_NO_CP10006} {$DEFINE STRSAFE_NO_CP10007} {$DEFINE STRSAFE_NO_CP10008} {$DEFINE STRSAFE_NO_CP10015} {$DEFINE STRSAFE_NO_CP10017} {$DEFINE STRSAFE_NO_CP10021} {$DEFINE STRSAFE_NO_CP10025} {$DEFINE STRSAFE_NO_CP10026} {$DEFINE STRSAFE_NO_CP10027} {$DEFINE STRSAFE_NO_CP10028} {$DEFINE STRSAFE_NO_CP10079} {$DEFINE STRSAFE_NO_CP10081} {$DEFINE STRSAFE_NO_CP10082} {$DEFINE STRSAFE_NO_CP101000} {$DEFINE STRSAFE_NO_CP101026} {$DEFINE STRSAFE_NO_CP10201} {$DEFINE STRSAFE_NO_CP10211} {$DEFINE STRSAFE_NO_CP10212} {$DEFINE STRSAFE_NO_CP10215} {$DEFINE STRSAFE_NO_CP10216} {$DEFINE STRSAFE_NO_CP1046} {$DEFINE STRSAFE_NO_CP1077} {$DEFINE STRSAFE_NO_CP1097} {$DEFINE STRSAFE_NO_CP1098} {$DEFINE STRSAFE_NO_CP1099} {$DEFINE STRSAFE_NO_CP1112} {$DEFINE STRSAFE_NO_CP1114} {$DEFINE STRSAFE_NO_CP1115} {$DEFINE STRSAFE_NO_CP1122} {$DEFINE STRSAFE_NO_CP1123} {$DEFINE STRSAFE_NO_CP1124} {$DEFINE STRSAFE_NO_CP1125} {$DEFINE STRSAFE_NO_CP1127} {$DEFINE STRSAFE_NO_CP1128} {$DEFINE STRSAFE_NO_CP1129} {$DEFINE STRSAFE_NO_CP12001} {$DEFINE STRSAFE_NO_CP12007} {$DEFINE STRSAFE_NO_CP12008} {$DEFINE STRSAFE_NO_CP12009} {$DEFINE STRSAFE_NO_CP12018} {$DEFINE STRSAFE_NO_CP12021} {$DEFINE STRSAFE_NO_CP12028} {$DEFINE STRSAFE_NO_CP12033} {$DEFINE STRSAFE_NO_CP1208} {$DEFINE STRSAFE_NO_CP1210} {$DEFINE STRSAFE_NO_CP1211} {$DEFINE STRSAFE_NO_CP1212} {$DEFINE STRSAFE_NO_CP1213} {$DEFINE STRSAFE_NO_CP1214} {$DEFINE STRSAFE_NO_CP1215} {$DEFINE STRSAFE_NO_CP1217} {$DEFINE STRSAFE_NO_CP1250} {$DEFINE STRSAFE_NO_CP1251} {$DEFINE STRSAFE_NO_CP1252} {$DEFINE STRSAFE_NO_CP1253} {$DEFINE STRSAFE_NO_CP1254} {$DEFINE STRSAFE_NO_CP1255} {$DEFINE STRSAFE_NO_CP1256} {$DEFINE STRSAFE_NO_CP1257} {$DEFINE STRSAFE_NO_CP1258} {$DEFINE STRSAFE_NO_CP13615} {$DEFINE STRSAFE_NO_CP1380} {$DEFINE STRSAFE_NO_CP1381} {$DEFINE STRSAFE_NO_CP1383} {$DEFINE STRSAFE_NO_CP1408} {$DEFINE STRSAFE_NO_CP1410} {$DEFINE STRSAFE_NO_CP1418} {$DEFINE STRSAFE_NO_CP1425} {$DEFINE STRSAFE_NO_CP1428} {$DEFINE STRSAFE_NO_CP1435} {$DEFINE STRSAFE_NO_CP1539} {$DEFINE STRSAFE_NO_CP154} {$DEFINE STRSAFE_NO_CP1543} {$DEFINE STRSAFE_NO_CP15510} {$DEFINE STRSAFE_NO_CP15700} {$DEFINE STRSAFE_NO_CP16} {$DEFINE STRSAFE_NO_CP16000} {$DEFINE STRSAFE_NO_CP16001} {$DEFINE STRSAFE_NO_CP16002} {$DEFINE STRSAFE_NO_CP16005} {$DEFINE STRSAFE_NO_CP16006} {$DEFINE STRSAFE_NO_CP16007} {$DEFINE STRSAFE_NO_CP16008} {$DEFINE STRSAFE_NO_CP16100} {$DEFINE STRSAFE_NO_CP16102} {$DEFINE STRSAFE_NO_CP16103} {$DEFINE STRSAFE_NO_CP16104} {$DEFINE STRSAFE_NO_CP16500} {$DEFINE STRSAFE_NO_CP16600} {$DEFINE STRSAFE_NO_CP16700} {$DEFINE STRSAFE_NO_CP1677} {$DEFINE STRSAFE_NO_CP16800} {$DEFINE STRSAFE_NO_CP1697} {$DEFINE STRSAFE_NO_CP1701} {$DEFINE STRSAFE_NO_CP1705} {$DEFINE STRSAFE_NO_CP1707} {$DEFINE STRSAFE_NO_CP1731} {$DEFINE STRSAFE_NO_CP1732} {$DEFINE STRSAFE_NO_CP1770} {$DEFINE STRSAFE_NO_CP1776} {$DEFINE STRSAFE_NO_CP1781} {$DEFINE STRSAFE_NO_CP1782} {$DEFINE STRSAFE_NO_CP1784} {$DEFINE STRSAFE_NO_CP1792} {$DEFINE STRSAFE_NO_CP187} {$DEFINE STRSAFE_NO_CP188} {$DEFINE STRSAFE_NO_CP189} {$DEFINE STRSAFE_NO_CP190} {$DEFINE STRSAFE_NO_CP191} {$DEFINE STRSAFE_NO_CP192} {$DEFINE STRSAFE_NO_CP193} {$DEFINE STRSAFE_NO_CP196} {$DEFINE STRSAFE_NO_CP1977} {$DEFINE STRSAFE_NO_CP1984} {$DEFINE STRSAFE_NO_CP2000} {$DEFINE STRSAFE_NO_CP2007} {$DEFINE STRSAFE_NO_CP2008} {$DEFINE STRSAFE_NO_CP2009} {$DEFINE STRSAFE_NO_CP2010} {$DEFINE STRSAFE_NO_CP20126} {$DEFINE STRSAFE_NO_CP20127} {$DEFINE STRSAFE_NO_CP20261} {$DEFINE STRSAFE_NO_CP20269} {$DEFINE STRSAFE_NO_CP20417} {$DEFINE STRSAFE_NO_CP20838} {$DEFINE STRSAFE_NO_CP20880} {$DEFINE STRSAFE_NO_CP20944} {$DEFINE STRSAFE_NO_CP2105} {$DEFINE STRSAFE_NO_CP2108} {$DEFINE STRSAFE_NO_CP2115} {$DEFINE STRSAFE_NO_CP21866} {$DEFINE STRSAFE_NO_CP2312} {$DEFINE STRSAFE_NO_CP2336} {$DEFINE STRSAFE_NO_CP2417} {$DEFINE STRSAFE_NO_CP2437} {$DEFINE STRSAFE_NO_CP2450} {$DEFINE STRSAFE_NO_CP2477} {$DEFINE STRSAFE_NO_CP2480} {$DEFINE STRSAFE_NO_CP2505} {$DEFINE STRSAFE_NO_CP260} {$DEFINE STRSAFE_NO_CP261} {$DEFINE STRSAFE_NO_CP263} {$DEFINE STRSAFE_NO_CP264} {$DEFINE STRSAFE_NO_CP268} {$DEFINE STRSAFE_NO_CP273} {$DEFINE STRSAFE_NO_CP277} {$DEFINE STRSAFE_NO_CP278} {$DEFINE STRSAFE_NO_CP280} {$DEFINE STRSAFE_NO_CP284} {$DEFINE STRSAFE_NO_CP285} {$DEFINE STRSAFE_NO_CP28581} {$DEFINE STRSAFE_NO_CP286} {$DEFINE STRSAFE_NO_CP288} {$DEFINE STRSAFE_NO_CP290} {$DEFINE STRSAFE_NO_CP297} {$DEFINE STRSAFE_NO_CP30} {$DEFINE STRSAFE_NO_CP31} {$DEFINE STRSAFE_NO_CP3270} {$DEFINE STRSAFE_NO_CP33554426} {$DEFINE STRSAFE_NO_CP33554432} {$DEFINE STRSAFE_NO_CP34880} {$DEFINE STRSAFE_NO_CP38598} {$DEFINE STRSAFE_NO_CP388} {$DEFINE STRSAFE_NO_CP39} {$DEFINE STRSAFE_NO_CP41000} {$DEFINE STRSAFE_NO_CP42} {$DEFINE STRSAFE_NO_CP43} {$DEFINE STRSAFE_NO_CP48} {$DEFINE STRSAFE_NO_CP50220} {$DEFINE STRSAFE_NO_CP50225} {$DEFINE STRSAFE_NO_CP5023} {$DEFINE STRSAFE_NO_CP57002} {$DEFINE STRSAFE_NO_CP57003} {$DEFINE STRSAFE_NO_CP57004} {$DEFINE STRSAFE_NO_CP57005} {$DEFINE STRSAFE_NO_CP57006} {$DEFINE STRSAFE_NO_CP57007} {$DEFINE STRSAFE_NO_CP57008} {$DEFINE STRSAFE_NO_CP57010} {$DEFINE STRSAFE_NO_CP57011} {$DEFINE STRSAFE_NO_CP57376} {$DEFINE STRSAFE_NO_CP57386} {$DEFINE STRSAFE_NO_CP57393} {$DEFINE STRSAFE_NO_CP57424} {$DEFINE STRSAFE_NO_CP57480} {$DEFINE STRSAFE_NO_CP5760} {$DEFINE STRSAFE_NO_CP5762} {$DEFINE STRSAFE_NO_CP577} {$DEFINE STRSAFE_NO_CP578} {$DEFINE STRSAFE_NO_CP58} {$DEFINE STRSAFE_NO_CP59} {$DEFINE STRSAFE_NO_CP60} {$DEFINE STRSAFE_NO_CP61} {$DEFINE STRSAFE_NO_CP6113} {$DEFINE STRSAFE_NO_CP6128} {$DEFINE STRSAFE_NO_CP6145} {$DEFINE STRSAFE_NO_CP62} {$DEFINE STRSAFE_NO

Создано по материалам из источника по ссылке.

Ошибка `STATUS_INVALID_INFO_CLASS` в функции `NTQueryObject` в Delphi на Windows XP связана с некорректным использованием класса информации для запроса.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Справочник по API-функциям ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2024-12-26 14:06:56/0.0033309459686279/0