ZwNotifyChangeKey 함수(ntifs.h)
ZwNotifyChangeKey 루틴을 사용하면 레지스트리 키가 변경될 때 드라이버가 알림을 요청할 수 있습니다.
구문
NTSYSAPI NTSTATUS ZwNotifyChangeKey(
[in] HANDLE KeyHandle,
[in, optional] HANDLE Event,
[in, optional] PIO_APC_ROUTINE ApcRoutine,
[in, optional] PVOID ApcContext,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[in] ULONG CompletionFilter,
[in] BOOLEAN WatchTree,
[out, optional] PVOID Buffer,
[in] ULONG BufferSize,
[in] BOOLEAN Asynchronous
);
매개 변수
[in] KeyHandle
알림 루틴을 등록할 키에 대한 핸들입니다. 이 핸들은 ZwCreateKey 또는 ZwOpenKey를 성공적으로 호출하여 만듭니다. 호출자가 KEY_NOTIFY 액세스를 지정해야 합니다.
[in, optional] Event
작업이 완료될 때 Signaled 상태로 설정될 호출자가 만든 이벤트에 대한 선택적 핸들입니다. NULL이 아닌 경우 호출자는 작업이 성공할 때까지 대기 상태로 전환되며, 이때 이벤트가 Signaled 상태로 설정됩니다.
[in, optional] ApcRoutine
작업이 완료된 후 실행할 호출자 제공 APC 루틴에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.
[in, optional] ApcContext
ApcRoutine이 가리키는 APC 루틴에 인수로 전달하는 포인터입니다. ApcRoutine이 NULL이 아닌 경우 이 인수가 필요하며 PVOID 형식으로 캐스팅되어야 합니다. 그렇지 않으면 ApcRoutine 이 NULL인 경우 이 매개 변수도 NULL로 설정합니다.
이 매개 변수의 의미는 루틴이 커널 모드에서 호출되는지 아니면 사용자 모드에서 호출되는지에 따라 달라집니다.
커널 모드 호출의 경우 이 매개 변수를 다음 WORK_QUEUE_TYPE 열거형 값 중 하나로 설정합니다.
- CriticalWorkQueue
- DelayedWorkQueue
사용자 모드 호출의 경우 이 매개 변수는 APC 루틴에 대해 호출자가 지정한 컨텍스트를 가리킵니다.
[out] IoStatusBlock
작업에 대한 최종 상태 정보가 포함된 IO_STATUS_BLOCK 구조체에 대한 포인터입니다. 데이터를 반환하는 성공적인 호출의 경우 Buffer에 기록된 바이트 수가 IoStatusBlock-Information>에 제공됩니다.
[in] CompletionFilter
드라이버에 알림을 표시하는 작업의 비트 마스크입니다. 다음 플래그 중 하나 이상 지정 합니다.
값 | 의미 |
---|---|
REG_NOTIFY_CHANGE_NAME | 하위 키가 추가되거나 삭제되면 호출자에게 알립니다. |
REG_NOTIFY_CHANGE_ATTRIBUTES | 보안 설명자 정보와 같은 키 특성에 대한 변경 내용을 호출자에게 알립니다. |
REG_NOTIFY_CHANGE_LAST_SET | 호출자에게 키 값에 대한 변경 내용을 알립니다. 여기에는 값 추가 또는 삭제 또는 기존 값 변경이 포함될 수 있습니다. (키에 기록된 새 값이 키의 이전 값과 일치하는 경우 호출자는 알림을 받지 않습니다.) |
REG_NOTIFY_CHANGE_SECURITY | 키의 보안 설명자에 대한 변경 내용을 호출자에게 알립니다. |
[in] WatchTree
TRUE이면 지정된 키의 모든 하위 키에 대한 변경 내용에 대한 알림이 드라이버에 표시됩니다. FALSE이면 지정된 키에 대한 변경 내용에 대해서만 드라이버에 알림이 표시됩니다.
[out, optional] Buffer
예약되어 있습니다. NULL을 지정합니다.
[in] BufferSize
예약되어 있습니다. 0을 지정합니다.
[in] Asynchronous
FALSE이면 지정된 이벤트가 발생할 때까지 루틴이 반환되지 않습니다. TRUE이면 루틴이 즉시 반환됩니다.
반환 값
ZwNotifyChangeKey 루틴은 성공에 대한 STATUS_SUCCESS 반환하거나, 그렇지 않으면 적절한 NTSTATUS 값을 반환합니다. 호출자가 비동기 매개 변수에 대해 TRUE를 지정하고 이벤트가 아직 발생하지 않은 경우 루틴은 STATUS_PENDING 반환합니다.
설명
ZwNotifyChangeKey 함수에 대한 호출이 사용자 모드에서 발생하는 경우 "ZwNotifyChangeKey" 대신 "NtNotifyChangeKey" 이름을 사용해야 합니다.
커널 모드 드라이버에서 호출하는 경우 Windows 네이티브 시스템 서비스 루틴의 NtXxx 및 ZwXxx 버전은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. 루틴의 NtXxx 버전과 ZwXxx 버전 간의 관계에 대한 자세한 내용은 네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 |
대상 플랫폼 | 유니버설 |
헤더 | ntifs.h(Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 규정 준수 규칙 | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |