Функция KeStackAttachProcess (ntifs.h)

Подпрограмма KeStackAttachProcess присоединяет текущий поток к адресной области целевого процесса.

Осторожностью Используйте эту процедуру с крайней осторожностью. (См. примечание в разделе Примечания.)
 

Синтаксис

void KeStackAttachProcess(
        PRKPROCESS   PROCESS,
  [out] PRKAPC_STATE ApcState
);

Параметры

PROCESS

Указатель на целевой объект процесса. Этот параметр может быть указателем PEPROCESS, возвращаемым IoGetCurrentProcess или PsGetCurrentProcess.

[out] ApcState

Непрозрачный указатель на структуру KAPC_STATE. Вызывающий объект должен выделить хранилище для этой структуры из непагрегированного пула или из собственного стека потоков вызывающего объекта.

Возвращаемое значение

None

Remarks

KeStackAttachProcess присоединяет текущий поток к диапазону адресов процесса, на который указывает параметр Process . Если текущий поток уже подключен к другому процессу, параметр ApcState получает текущее состояние APC до подключения KeStackAttachProcess к новому процессу.

Каждый вызов KeStackAttachProcess должен соответствовать последующему вызову KeUnstackDetachProcess.

Примечание Присоединение потока к другому процессу может препятствовать завершению асинхронных операций ввода-вывода и потенциально привести к взаимоблокировкам. Как правило, строки кода между вызовом KeStackAttachProcess и вызовом KeUnstackDetachProcess должны быть очень простыми и не должны вызывать сложные подпрограммы или отправлять irP другим драйверам.
 

Дополнительные сведения об использовании системных потоков и управлении синхронизацией в контексте неарбитарных потоков см. в статье Windows Kernel-Mode Process and Thread Manager.

Требования

Требование Значение
Минимальная версия клиента Windows 2000
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h, Fltkernel.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

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

IoGetCurrentProcess

IoGetRequestorProcess

IoThreadToProcess

KeGetCurrentIrql

KeGetCurrentThread

KeUnstackDetachProcess

PsGetCurrentProcess

PsGetCurrentThread