Поделиться через


Функция 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 дескриптор будет значением параметра hResource функции CreateResource(D3D10). Для драйверов пользовательского режима Direct3D 9 дескриптор будет значением параметра pResource, возвращаемого драйвером в функции CreateResource.

Драйвер может задать это значение для NULL, если он использует выделение внутри системы.

hDxgAllocation

Дескриптор выделения подсистемы ядра графики DirectX (Dxgkrnl.sys), с которым сопоставляется выделение Direct3D.

Offset

Начальный адрес в байтах выделения Direct3D в выделении Dxgkrnl.

Size

Размер выделения Direct3D в байтах в выделении Dxgkrnl.

Usage

Структура UMDETW_ALLOCATION_USAGE, указывающая причину этого сопоставления.

Semantic

Если выделение используется внутренне драйвером пользовательского режима, это UMDETW_ALLOCATION_SEMANTIC структура, указывающая, для чего используется выделение.

Возвращаемое значение

Никакой

Замечания

При вызове эта функция регистрирует событие, описывающее ресурс API, для которого используется выделение или для которого используется. Если ресурс API не был связан с выделением, функция регистрирует событие, описывающее назначение, указанное драйвером для этого выделения.

Драйвер отображения в пользовательском режиме должен полностью учитывать выделенную видеопамяти, поэтому он должен вызывать эту функцию для регистрации события при каждом изменении выделения.

Драйвер должен передать те же значения параметров UMDEtwLogUnmapAllocation, как и UMDEtwLogMapAllocation.

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 (include Umdprovider.h)

См. также

CreateResource

CreateResource(D3D10)

UMDETW_ALLOCATION_SEMANTIC

UMDETW_ALLOCATION_USAGE

UMDEtwLogMapAllocation