Функция NtQueryInformationThread (winternl.h)
[NtQueryInformationThread может быть изменен или недоступен в будущих версиях Windows. Приложения должны использовать альтернативные функции, перечисленные в этом разделе.]
Извлекает сведения об указанном потоке.
Синтаксис
__kernel_entry NTSTATUS NtQueryInformationThread(
[in] HANDLE ThreadHandle,
[in] THREADINFOCLASS ThreadInformationClass,
[in, out] PVOID ThreadInformation,
[in] ULONG ThreadInformationLength,
[out, optional] PULONG ReturnLength
);
Параметры
[in] ThreadHandle
Дескриптор потока, о котором запрашиваются сведения.
[in] ThreadInformationClass
Если этот параметр является значением ThreadIsIoPending перечисления THREADINFOCLASS , функция определяет, есть ли в потоке ожидающие операции ввода-вывода.
Для получения этих сведений используйте общедоступную функцию GetThreadIOPendingFlag .
Если этот параметр является значением ThreadQuerySetWin32StartAddress перечисления THREADINFOCLASS , функция возвращает начальный адрес потока. Обратите внимание, что в версиях Windows до Windows Vista возвращенный начальный адрес является надежным только перед запуском потока.
Если этот параметр является значением ThreadSubsystemInformation перечисления THREADINFOCLASS , функция получает значение SUBSYSTEM_INFORMATION_TYPE , указывающее тип подсистемы потока. Буфер, на который указывает параметр ThreadInformation , должен быть достаточно большим, чтобы вместить одно перечисление SUBSYSTEM_INFORMATION_TYPE .
[in, out] ThreadInformation
Указатель на буфер, в котором функция записывает запрошенные сведения. Если threadIsIoPending указан для параметра ThreadInformationClass , этот буфер должен быть достаточно большим, чтобы вместить значение ULONG , указывающее, ожидается ли ожидание запросов ввода-вывода в указанном потоке. Если это значение равно нулю, то ожидающих операций ввода-вывода нет; В противном случае, если значение не равно нулю, поток имеет ожидающие операции ввода-вывода.
Для получения этих сведений используйте общедоступную функцию GetThreadIOPendingFlag .
Если threadQuerySetWin32StartAddress указан для параметра ThreadInformationClass , этот буфер должен быть достаточно большим, чтобы вместить значение PVOID, которое является начальным адресом потока.
[in] ThreadInformationLength
Размер буфера, на который указывает параметр ThreadInformation , в байтах.
[out, optional] ReturnLength
Указатель на переменную, в которой функция возвращает размер запрошенной информации. Если функция была успешной, это размер сведений, записанных в буфер, на который указывает параметр ThreadInformation , но если буфер был слишком мал, это минимальный размер буфера, необходимый для успешного получения информации.
Возвращаемое значение
Возвращает код ошибки или успешного выполнения NTSTATUS.
Формы и важность кодов ошибок NTSTATUS перечислены в файле заголовка Ntstatus.h, доступном в DDK, и описаны в документации по DDK в разделе Kernel-Mode Driver Architecture / Design Guide / Driver Programming Techniques / Logging Errors .
Комментарии
Функция NtQueryInformationThread является внутренней для операционной системы и может быть изменена из одного выпуска Windows в другой. Для обеспечения совместимости приложения лучше использовать ранее упомянутую общедоступную функцию.
Если вы используете NtQueryInformationThread, получите доступ к функции через динамическое связывание во время выполнения. Это дает коду возможность корректно реагировать, если функция была изменена или удалена из операционной системы. Однако изменения подписи могут быть недоступны для обнаружения.
У этой функции нет связанной библиотеки импорта. Для динамической связи с Ntdll.dll необходимо использовать функции LoadLibrary и GetProcAddress .
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | winternl.h |
Библиотека | ntdll.lib |
DLL | ntdll.dll |