Комментарии 3
А то, что написанная ещё во времена Windows NT функция NtQuerySystemInformation(SystemHandleInformation,...) имела (и имеет) некоторый вполне ограниченный внутренний буфер. Я не нашел нигде точного указания его размера, но, очевидно, что он не был рассчитан на миллион дескрипторов. В итоге функция возвращает их «сколько может», а значит среди них может оказаться, а может и не оказаться искомый.
Мне кажется, что суть проблемы не в каком-то ограниченном внутреннем буфере. Если внимательно посмотреть на SYSTEM_HANDLE_TABLE_ENTRY_INFO, то можно обнаружить, что HandleValue имеет тип USHORT, который имеет размер всего 2-а байта (поле не может быть больше 0xFFFF).
А в новой структуре SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX это поле (HandleValue) уже имеет тип ULONG_PTR.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Проблемы использования функции NtQuerySystemInformation с недокументированными аргументами