다음을 통해 공유


PLOAD_IMAGE_NOTIFY_ROUTINE 콜백 함수(ntddk.h)

드라이버 이미지 또는 사용자 이미지(예: DLL 또는 EXE)가 가상 메모리에 매핑되는 경우 드라이버에 알리기 위해 운영 체제에서 호출합니다. 운영 체제는 이미지가 메모리에 매핑된 후 진입점이 호출되기 전에 이 루틴을 호출합니다.

경고

이 루틴에서 수행할 수 있는 작업은 안전한 호출에 대해 제한됩니다. 모범 사례를 참조하세요.

구문

PLOAD_IMAGE_NOTIFY_ROUTINE PloadImageNotifyRoutine;

void PloadImageNotifyRoutine(
  [in, optional] PUNICODE_STRING FullImageName,
  [in]           HANDLE ProcessId,
  [in]           PIMAGE_INFO ImageInfo
)
{...}

매개 변수

[in, optional] FullImageName

실행 파일 이미지 파일을 식별하는 버퍼링된 유니코드 문자열에 대한 포인터입니다. ( FullImageName 매개 변수는 운영 체제가 프로세스 생성 시 이미지의 전체 이름을 가져올 수 없는 경우 NULL 일 수 있습니다.)

[in] ProcessId

이미지가 매핑된 프로세스의 프로세스 ID이지만 새로 로드된 이미지가 드라이버인 경우 이 핸들은 0입니다.

[in] ImageInfo

이미지 정보를 포함하는 IMAGE_INFO 구조체에 대한 포인터입니다. 설명 부분을 참조하세요.

반환 값

없음

설명

최고 수준의 시스템 프로파일링 드라이버는 PsSetLoadImageNotifyRoutine 을 호출하여 부하 이미지 알림 루틴을 설정할 수 있습니다.

운영 체제는 SEC_IMAGE_NO_EXECUTE 특성으로 만든 섹션이 가상 메모리에 매핑되는 경우 부하 이미지 알림 루틴을 호출하지 않습니다.

Windows 7, Windows Server 2008 R2 및 이전 버전의 Windows에서 운영 체제는 사용자 프로세스 주소 공간(사용자 공간)에 로드된 이미지에 대한 부하 이미지 알림 루틴을 호출하는 동안 내부 시스템 잠금을 유지합니다. 교착 상태를 방지하기 위해 로드 이미지 알림 루틴은 사용자 공간 가상 메모리에서 다른 작업을 매핑, 할당, 쿼리, 사용 가능 또는 수행하는 시스템 루틴을 호출해서는 안 됩니다.

드라이버는 언로드하기 전에 등록하는 콜백을 제거해야 합니다. PsRemoveLoadImageNotifyRoutine 루틴을 호출하여 콜백을 제거할 수 있습니다.

새로 만든 프로세스에 대한 기본 실행 파일이 로드되면 로드 이미지 알림 루틴이 새 프로세스의 컨텍스트에서 실행됩니다. 운영 체제는 일반 커널 API가 항상 사용하지 않도록 설정되고 경우에 따라 커널 및 특수 APC가 모두 사용하지 않도록 설정된 중요한 지역 내의 PASSIVE_LEVEL 드라이버의 부하 이미지 알림 루틴을 호출합니다.

로드 이미지 알림 루틴이 호출되면 FullImageName 입력은 실행 파일 이미지 파일을 식별하는 버퍼링된 유니코드 문자열을 가리킵니다. ( FullImageName 매개 변수는 운영 체제가 프로세스 생성 시 이미지의 전체 이름을 가져올 수 없는 경우 NULL 일 수 있습니다.) ProcessId 핸들은 이미지가 매핑된 프로세스를 식별하지만 새로 로드된 이미지가 드라이버인 경우 이 핸들은 0입니다. ImageInfo에서 버퍼링된 데이터의 형식을 보려면 IMAGE_INFO. extendedInfoPresent 플래그가 IMAGE_INFO 구조에 설정된 경우 정보는 IMAGE_INFO_EX 이미지 정보 구조의 더 크고 확장된 버전의 일부입니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 ntddk.h(Ntddk.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

IMAGE_INFO

IMAGE_INFO_EX

PsSetLoadImageNotifyRoutine