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 포함)

추가 정보

ExCreateCallback

IoCreateFile

OBJECT_ATTRIBUTES

PsCreateSystemThread

SECURITY_DESCRIPTOR

UNICODE_STRING

ZwCreateDirectoryObject

ZwCreateFile

ZwCreateKey

ZwMakeTemporaryObject

ZwOpenFile

ZwOpenKey

ZwOpenSection

ZwOpenSymbolicLinkObject