InitializeObjectAttributes 매크로(ntdef.h)
InitializeObjectAttributes 매크로는 핸들을 여는 루틴에 대한 개체 핸들의 속성을 지정하는 불투명 OBJECT_ATTRIBUTES 구조를 초기화합니다.
구문
VOID InitializeObjectAttributes(
[out] POBJECT_ATTRIBUTES p,
[in] PUNICODE_STRING n,
[in] ULONG a,
[in] HANDLE r,
[in, optional] PSECURITY_DESCRIPTOR s
);
매개 변수
p
초기화할 OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다.
n
핸들을 열 개체의 이름을 포함하는 유니코드 문자열에 대한 포인터입니다. 정규화된 개체 이름이거나 RootDirectory 매개 변수로 지정된 개체 디렉터리에 대한 상대 경로 이름이어야 합니다.
a
다음 플래그 중 하나 이상을 지정합니다.
플래그 | 설명 |
---|---|
OBJ_INHERIT | 이 핸들은 현재 프로세스의 자식 프로세스에서 상속할 수 있습니다. |
OBJ_PERMANENT | 이 플래그는 개체 관리자 내에서 명명된 개체에만 적용됩니다. 기본적으로 이러한 개체는 열려 있는 모든 핸들이 닫혀 있을 때 삭제됩니다. 이 플래그를 지정하면 열려 있는 모든 핸들이 닫혀 있으면 개체가 삭제되지 않습니다. 드라이버는 ZwMakeTemporaryObject를 사용하여 영구 개체를 삭제할 수 있습니다. |
OBJ_EXCLUSIVE | 이 개체에 대해 단일 핸들만 열 수 있습니다. |
OBJ_CASE_INSENSITIVE | 이 플래그를 지정하면 ObjectName 매개 변수를 기존 개체의 이름과 일치시킬 때 대/소문자를 구분하지 않는 비교가 사용됩니다. 그렇지 않으면 기본 시스템 설정을 사용하여 개체 이름을 비교합니다. |
OBJ_OPENIF | 이 플래그가 개체를 만드는 루틴에 지정되고 해당 개체가 이미 있는 경우 루틴은 해당 개체를 열어야 합니다. 그렇지 않으면 개체를 만드는 루틴은 STATUS_OBJECT_NAME_COLLISION NTSTATUS 코드를 반환합니다. |
OBJ_KERNEL_HANDLE | 커널 모드에서만 핸들에 액세스할 수 있도록 지정합니다. |
OBJ_FORCE_ACCESS_CHECK | 핸들을 여는 루틴은 핸들이 커널 모드로 열려 있는 경우에도 개체에 대한 모든 액세스 검사를 적용해야 합니다. |
r
ObjectName 매개 변수에 지정된 경로 이름의 루트 개체 디렉터리에 대한 핸들입니다. ObjectName이 정규화된 개체 이름인 경우 RootDirectory는 NULL입니다. ZwCreateDirectoryObject ZwCreateDirectoryObject 를 사용하여 개체 디렉터리에 대한 핸들을 가져옵니다.
s
개체를 만들 때 개체에 적용할 보안 설명자를 지정합니다. 이 매개 변수는 선택 사항입니다. 드라이버는 NULL을 지정하여 개체의 기본 보안을 허용할 수 있습니다. 자세한 내용은 아래 설명 부분을 참조하십시오.
반환 값
없음
설명
InitializeObjectAttributes는 열 개체 핸들의 속성을 지정하는 OBJECT_ATTRIBUTES 구조를 초기화합니다. 그런 다음 호출자는 이 구조체에 대한 포인터를 실제로 핸들을 여는 루틴에 전달할 수 있습니다.
시스템 프로세스 이외의 프로세스 컨텍스트에서 실행되는 드라이버 루틴은 Attributes 매개 변수에 대한 OBJ_KERNEL_HANDLE 플래그를 설정해야 합니다. 이 플래그는 해당 개체에 대해 열린 핸들의 사용을 커널 모드에서만 실행되는 프로세스로 제한합니다. 그렇지 않으면 드라이버가 실행 중인 컨텍스트의 프로세스에서 핸들에 액세스할 수 있습니다.
InitializeObjectAttributes는 항상 OBJECT_ATTRIBUTESSecurityQualityOfService 멤버를 NULL로 설정합니다. NULL이 아닌 값이 필요한 드라이버는 SecurityQualityOfService를 직접 설정할 수 있습니다.
요구 사항
대상 플랫폼 | 데스크톱 |
머리글 | ntdef.h(Wdm.h, Ntddk.h, Ntdef.h 포함) |