Поделиться через


Функция 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

См. также раздел

GetThreadIOPendingFlag