UMDEtwLogUnmapAllocation 함수(umdprovider.h)

Microsoft DirectX 그래픽 커널 하위 시스템(Dxgkrnl.sys) 메모리 할당 또는 할당의 일부가 더 이상 사용되지 않음을 나타냅니다. 할당이 제거되는지 여부에 관계없이 이 함수를 호출합니다.

구문

void UMDEtwLogUnmapAllocation(
  ULONGLONG                  hD3DAllocation,
  ULONGLONG                  hDxgAllocation,
  ULONGLONG                  Offset,
  ULONGLONG                  Size,
  UMDETW_ALLOCATION_USAGE    Usage,
  UMDETW_ALLOCATION_SEMANTIC Semantic
);

매개 변수

hD3DAllocation

Direct3D 할당에 대한 핸들입니다.

Direct3D 10 사용자 모드 드라이버의 경우 핸들은 CreateResource(D3D10) 함수의 hResource 매개 변수 값이 됩니다. Direct3D 9 사용자 모드 드라이버의 경우 핸들은 드라이버가 CreateResource 함수에서 반환하는 pResource 매개 변수의 값이 됩니다.

드라이버는 내부적으로 할당을 사용하는 경우 이 값을 NULL 로 설정할 수 있습니다.

hDxgAllocation

Direct3D 할당이 매핑되는 DirectX 그래픽 커널 하위 시스템(Dxgkrnl.sys) 할당에 대한 핸들입니다.

Offset

Dxgkrnl 할당 내에서 Direct3D 할당의 시작 주소(바이트)입니다.

Size

Dxgkrnl 할당 내의 Direct3D 할당 크기(바이트)입니다.

Usage

이 매핑의 이유를 나타내는 UMDETW_ALLOCATION_USAGE 구조체입니다.

Semantic

할당이 사용자 모드 드라이버에서 내부적으로 사용되는 경우 할당이 사용되는 대상을 나타내는 UMDETW_ALLOCATION_SEMANTIC 구조입니다.

반환 값

없음

설명

호출될 때 이 함수는 할당이 사용 중이거나 사용 중인 API 리소스를 설명하는 이벤트를 기록합니다. 할당과 연결된 API 리소스가 없는 경우 함수는 드라이버가 이 할당에 대해 표시한 목적을 설명하는 이벤트를 기록합니다.

사용자 모드 표시 드라이버는 할당하는 비디오 메모리를 완전히 고려해야 하므로 할당이 변경 될 때마다 이벤트를 기록하기 위해 이 함수를 호출해야 합니다.

드라이버는 UMDEtwLogMapAllocation 과 동일한 매개 변수 값을 UMDEtwLogUnmapAllocation에 전달해야 합니다.

UMDEtwLogUnmapAllocation 은 Umdprovider.h에서 다음과 같이 인라인으로 정의됩니다.

FORCEINLINE void LogMapAllocation(BOOLEAN Enter,
                    ULONGLONG hD3DAllocation,
                    ULONGLONG hDxgAllocation,
                    ULONGLONG Offset,
                    ULONGLONG Size,
                    UMDETW_ALLOCATION_USAGE Usage,
                    UMDETW_ALLOCATION_SEMANTIC Semantic)
{
    if (Enabled)
    {   
        EVENT_DATA_DESCRIPTOR Descriptors[6];
        
        // Create a description of the event
        EventDataDescCreate(&Descriptors[0], &hD3DAllocation, 8);
        EventDataDescCreate(&Descriptors[1], &hDxgAllocation, 8);
        EventDataDescCreate(&Descriptors[2], &Offset, 8);
        EventDataDescCreate(&Descriptors[3], &Size, 8);
        EventDataDescCreate(&Descriptors[4], &Usage, 4);
        EventDataDescCreate(&Descriptors[5], &Semantic, 4);

        // Log the event
        EventWrite(
            RegHandle,
            Enter ? (InRundown ? &RundownAllocationEvent : &MapAllocationEvent) : &UnmapAllocationEvent,
            sizeof(Descriptors) / sizeof(Descriptors[0]),
            Descriptors
        );
    }
}

FORCEINLINE void UMDEtwLogUnmapAllocation(ULONGLONG hD3DAllocation,
                              ULONGLONG hDxgAllocation,
                              ULONGLONG Offset,
                              ULONGLONG Size,
                              UMDETW_ALLOCATION_USAGE Usage,
                              UMDETW_ALLOCATION_SEMANTIC Semantic)
{
    LogMapAllocation(FALSE,
                     hD3DAllocation,
                     hDxgAllocation,
                     Offset,
                     Size,
                     Usage,
                     Semantic);
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8
지원되는 최소 서버 Windows Server 2012
대상 플랫폼 데스크톱
머리글 umdprovider.h(Umdprovider.h 포함)

추가 정보

CreateResource

CreateResource(D3D10)

UMDETW_ALLOCATION_SEMANTIC

UMDETW_ALLOCATION_USAGE

UMDEtwLogMapAllocation