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 또는
[in, optional] Event
작업이 완료될 때 신호됨 상태로 설정될 호출자가 만든 이벤트에 대한 선택적 핸들입니다. NULL이 아닌 경우 호출자는 작업이 성공할 때까지 대기 상태로 전환되며, 이때 이벤트가 Signaled 상태로 설정됩니다.
[in, optional] ApcRoutine
작업이 완료된 후 실행할 호출자 제공 APC 루틴에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.
[in, optional] ApcContext
ApcRoutine 가리키는
이 매개 변수의 의미는 루틴이 커널 모드에서 호출되는지 아니면 사용자 모드에서 호출되는지에 따라 달라집니다.
커널 모드 호출의 경우 이 매개 변수를 다음 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" 이름을 사용해야 합니다.
커널 모드 드라이버의 호출의 경우 NtXxx 및 ZwXxx 버전의 Windows Native System Services 루틴은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 |
대상 플랫폼 | 보편적 |
헤더 | ntifs.h(Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL |
PASSIVE_LEVEL |
DDI 규정 준수 규칙 |
HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |
참고 항목
ZwCreateKey
ZwOpenKey