NtClose 함수(ntifs.h)
NtClose 루틴은 개체 핸들을 닫습니다.
통사론
__kernel_entry NTSYSCALLAPI NTSTATUS NtClose(
[in] HANDLE Handle
);
매개 변수
[in] Handle
모든 형식의 개체에 대한 핸들입니다.
반환 값
NtClose 성공에 대한 STATUS_SUCCESS 반환하거나 다음과 같은 적절한 NTSTATUS 오류 코드를 반환합니다.
반환 코드 | 의미 |
---|---|
STATUS_INVALID_HANDLE | 핸들 올바른 핸들이 아닙니다. |
STATUS_HANDLE_NOT_CLOSABLE | 호출 스레드에는 핸들을 닫을 수 있는 권한이 없습니다. 즉, 지정된 개체 핸들은 NtClose인스턴스 시도로부터 닫히지 않도록 보호됩니다. |
후자의 NTSTATUS 코드가 발생하는 예는 ZwDuplicateObject 호출한 OBJ_PROTECT_CLOSE 핸들 특성 매개 변수 인수에 전달된 경우입니다. 커널은 이 경우 핸들을 닫을 수 없도록 합니다.
발언
NtClose 모든 유형의 개체에서 작동하는 제네릭 루틴입니다.
열린 개체 핸들을 닫으면 해당 핸들이 유효하지 않습니다. 또한 시스템은 개체의 핸들 수를 감소시키고 개체를 삭제할 수 있는지 여부를 확인합니다. 시스템은 개체의 모든 핸들이 닫히고 참조된 포인터가 남아 있지 않을 때까지 개체를 실제로 삭제하지 않습니다.
드라이버는 핸들이 더 이상 필요하지 않은 즉시 열리는 모든 핸들을 닫아야 합니다. 시스템 스레드에서 열거나 OBJ_KERNEL_HANDLE 플래그를 지정하여 연 커널 핸들은 이전 프로세서 모드가 KernelMode
비커널 핸들은 두 조건 중 하나가 충족되는 경우에만 닫을 수 있습니다. 이전 프로세서 모드는 KernelMode
NtClose 호출자는 이 루틴이 반환되기 전에 모든 I/O가 완료되기를 자동으로 기다린다고 가정해서는 안 됩니다.
이 함수에 대한 호출이 사용자 모드에서 발생하는 경우 "ZwClose" 대신 "NtClose" 이름을 사용해야 합니다.
커널 모드 드라이버의 호출의 경우 NtXxx 및 ZwXxx 버전의 Windows Native System Services 루틴은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 |
대상 플랫폼 | 보편적 |
헤더 | ntifs.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL |
PASSIVE_LEVEL |
DDI 규정 준수 규칙 |
HwStorPortProhibitedDDIs, IrqlZwPassive, PowerIrpDDis, ZwRegistryCreate, ZwRegistryCreate(storport), ZwRegistryOpen, ZwRegistryOpen(storport) |
참고 항목
ZwCreateDirectoryObject
ZwCreateFile
ZwCreateKey
ZwOpenKey
ZwOpenSection