다음을 통해 공유


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.

AccessModeKernelMode인 경우에도 이 매개 변수는 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)

추가 정보

ObDereferenceObject

ObReferenceObject

ObReferenceObjectByHandle

ZwClose