ObReferenceObjectWithTag 매크로(wdm.h)

ObReferenceObjectWithTag 루틴은 지정된 개체의 참조 수를 증가시키고 개체 참조 추적을 지원하기 위해 개체에 4바이트 태그 값을 씁니다.

구문

void ObReferenceObjectWithTag(
  [in]  Object,
  [in]  Tag
);

매개 변수

[in] Object

개체에 대한 포인터입니다. 호출자는 개체를 만들 때 또는 개체를 연 후 ObReferenceObjectByHandleWithTag 루틴에 대한 이전 호출에서 이 포인터를 가져옵니다.

[in] Tag

4 바이트 사용자 지정 태그 값을 지정합니다. 자세한 내용은 아래 설명 부분을 참조하십시오.

반환 값

없음

설명

ObReferenceObjectWithTag 는 시스템 사용을 위해 예약된 값을 반환합니다. 드라이버는 이 값을 VOID로 처리해야 합니다.

ObReferenceObjectWithTag 는 지정된 개체에 대한 액세스 검사를 수행하지 않고 개체에 대한 포인터 참조 수를 증가합니다. 반면 , ObReferenceObjectByHandleWithTagObReferenceObjectByPointerWithTag 루틴은 호출자가 개체에 필요한 액세스 권한을 가지고 있는지 확인하고 호출자에게 이러한 권한이 없는 경우 실패합니다.

ObReferenceObjectWithTag 호출은 적어도 드라이버가 ObDereferenceObjectWithTag 루틴을 호출하거나 개체를 닫을 때까지 지정된 개체의 삭제를 방지합니다. 개체가 더 이상 필요하지 않으면 드라이버는 ObDereferenceObjectWithTag 를 호출하여 개체에 대한 참조를 제거해야 합니다.

개체에 대한 참조 수가 0에 도달하면 커널 모드 구성 요소가 개체를 삭제할 수 있습니다. 그러나 드라이버는 만든 개체만 삭제할 수 있으며 드라이버는 만들지 않은 개체를 삭제하려고 시도해서는 안 됩니다.

개체 참조에 대한 자세한 내용은 개체의 수명 주기를 참조하세요.

ObReferenceObject 루틴은 호출자가 개체에 사용자 지정 태그를 쓸 수 있도록 설정하지 않는다는 점을 제외하고 ObReferenceObjectWithTag와 유사합니다. Windows 7 이상 버전의 Windows에서 ObReferenceObject 는 항상 개체에 기본 태그 값('tlfD')을 씁니다. ObReferenceObject 호출은 태그 = 'tlfD'를 지정하는 ObReferenceObjectWithTag 호출과 동일한 효과를 집니다.

Windows 디버깅 도구에서 개체 참조 추적을 보려면 !obtrace 커널 모드 디버거 확장을 사용합니다. Windows 7에서는 개체 참조 추적을 사용하는 경우 개체 참조 태그를 표시하도록 !obtrace 확장이 향상되었습니다. 기본적으로 개체 참조 추적은 꺼져 있습니다. Gflags( Global Flags Editor )를 사용하여 개체 참조 추적을 사용하도록 설정합니다. 자세한 내용은 태그를 사용하는 개체 참조 추적을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 운영 체제의 Windows 7 이상 버전에서 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 wdm.h(Wdm.h, Ntddk.h, Ntifs.h, Fltkernel.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport)

추가 정보

ObDereferenceObjectWithTag

ObReferenceObject

ObReferenceObjectByHandleWithTag

ObReferenceObjectByPointerWithTag