ObReferenceObjectByPointer 함수(wdm.h)
ObReferenceObjectByPointer 루틴은 지정된 개체에 대한 포인터 참조 수를 증가합니다.
구문
NTSTATUS ObReferenceObjectByPointer(
[in] PVOID Object,
[in] ACCESS_MASK DesiredAccess,
[in, optional] POBJECT_TYPE ObjectType,
[in] KPROCESSOR_MODE AccessMode
);
매개 변수
[in] Object
개체의 본문에 대한 포인터입니다.
[in] DesiredAccess
개체에 대한 요청된 액세스를 나타내는 마스크를 지정합니다.
[in, optional] ObjectType
개체 형식에 대한 포인터입니다. ObjectType 은 *ExEventObjectType일 수 있습니다. *ExSemaphoreObjectType, *IoFileObjectType, *PsProcessType, *PsThreadType, *SeTokenObjectType, *TmEnlistmentObjectType, *TmResourceManagerObjectType, *TmTransactionManagerObjectType 또는 *TmTransactionObjectType.
AccessMode가 KernelMode인 경우에도 이 매개 변수는 NULL일 수 있습니다.
[in] AccessMode
액세스 검사 사용할 액세스 모드를 나타냅니다. UserMode 또는 KernelMode여야 합니다. 하위 수준 드라이버는 KernelMode를 지정해야 합니다.
반환 값
ObReferenceObjectByPointer 는 루틴이 대상 개체 본문의 참조 수를 성공적으로 증가시켰을 때 STATUS_SUCCESS 반환합니다. 루틴은 호출이 사용자 모드에서 수행되고 호출자가 요청한 형식이 개체 본문의 형식과 일치하지 않는 경우 개체 형식 유효성 검사를 수행하며 STATUS_OBJECT_TYPE_MISMATCH 반환됩니다. 요청된 형식이 액세스 모드의 종류에 관계없이 루틴에서 허용되지 않는 기호 링크 형식(ObpSymbolicLinkObjectType)인 경우 동일한 NTSTATUS 코드가 반환됩니다.
설명
이 루틴을 호출하면 다른 구성 요소의 ObDereferenceObject 또는 ZwClose 호출로 인해 개체가 삭제되지 않을 수 있습니다. 호출자는 개체를 사용하여 수행되는 즉시 ObDereferenceObject 를 사용하여 참조 수를 감소시켜야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
헤더 | wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= DISPATCH_LEVEL |
DDI 규정 준수 규칙 | HwStorPortProhibitedDDIs(storport), TargetRelationNeedsRef(wdm) |