다음을 통해 공유


PsSetCreateProcessNotifyRoutineEx 함수(ntddk.h)

PsSetCreateProcessNotifyRoutineEx 루틴은 프로세스를 만들거나 종료할 때 호출자에게 알릴 콜백 루틴을 등록하거나 제거합니다.

구문

NTSTATUS PsSetCreateProcessNotifyRoutineEx(
  [in] PCREATE_PROCESS_NOTIFY_ROUTINE_EX NotifyRoutine,
  [in] BOOLEAN                           Remove
);

매개 변수

[in] NotifyRoutine

등록하거나 제거할 PCREATE_PROCESS_NOTIFY_ROUTINE_EX 루틴에 대한 포인터입니다. 운영 체제는 새 프로세스를 만들 때마다 이 루틴을 호출합니다.

[in] Remove

PsSetCreateProcessNotifyRoutineEx가 콜백 루틴 목록에서 지정된 루틴을 추가하거나 제거할지 여부를 지정하는 부울 값입니다. 이 매개 변수가 TRUE이면 지정된 루틴이 콜백 루틴 목록에서 제거됩니다. 이 매개 변수가 FALSE이면 지정된 루틴이 콜백 루틴 목록에 추가됩니다. RemoveTRUE이면 시스템은 반환하기 전에 모든 진행 중인 콜백 루틴이 완료되기를 기다립니다.

반환 값

PsSetCreateProcessNotifyRoutineEx 는 다음 NTSTATUS 값 중 하나를 반환합니다.

반환 코드 설명
STATUS_SUCCESS
이제 지정된 루틴이 운영 체제에 등록됩니다. 운영 체제는 새 프로세스를 만들 때마다 이 루틴을 호출합니다.
STATUS_INVALID_PARAMETER
지정된 루틴이 이미 등록되었거나 운영 체제가 프로세스 생성 콜백 루틴 등록 제한에 도달했습니다.
STATUS_ACCESS_DENIED
콜백 루틴 포인터가 포함된 이미지에 이미지 헤더에 IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 설정되지 않았습니다.

설명

최고 수준의 드라이버는 PsSetCreateProcessNotifyRoutineEx 를 호출하여 PCREATE_PROCESS_NOTIFY_ROUTINE_EX 루틴을 등록할 수 있습니다. 설치 가능한 파일 시스템(IFS) 또는 최고 수준의 시스템 프로파일링 드라이버는 프로세스 생성 콜백 루틴을 등록하여 시스템 전체에서 드라이버의 내부 상태에 대해 생성 및 삭제되는 프로세스를 추적할 수 있습니다.

드라이버는 언로드하기 전에 등록하는 콜백 루틴을 제거해야 합니다. 제거가 TRUE로 설정된 PsSetCreateProcessNotifyRoutineEx 를 호출하여 콜백 루틴을 제거할있습니다. 드라이버는 PCREATE_PROCESS_NOTIFY_ROUTINE_EX 콜백 루틴의 구현에서 이 호출을 수행해서는 안됩니다.

운영 체제는 일반 커널 APC 가 사용하지 않도록 설정된 중요한 지역 내의 PASSIVE_LEVEL 드라이버의 프로세스 알림 루틴을 호출합니다. 프로세스를 만들 때 프로세스 알림 루틴은 새 프로세스를 만든 스레드의 컨텍스트에서 실행됩니다. 프로세스가 삭제되면 프로세스 알림 루틴은 프로세스에서 종료할 마지막 스레드의 컨텍스트에서 실행됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 SP1 및 Windows Server 2008을 사용하여 Windows Vista부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 ntddk.h(Ntddk.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

추가 정보

PCREATE_PROCESS_NOTIFY_ROUTINE_EX

PS_CREATE_NOTIFY_INFO

PsSetCreateProcessNotifyRoutine