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


Функция UMDEtwLogMapAllocation (umdprovider.h)

Описывает, как используется подсистема ядра графики Microsoft DirectX (Dxgkrnl.sys) или часть выделения.

Синтаксис

void UMDEtwLogMapAllocation(
  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 структура, указывающая, для чего используется выделение.

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

Никакой

Замечания

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

Примеры вызова этой функции:

  • Выделение Direct3D упаковывается в подсистему ядра графики DirectX (Dxgkrnl.sys) выделения.
  • Выделение Dxgkrnl создается как царапная поверхность. В этом случае задайте для параметра hD3DAllocation значение NULL.
UMDEtwLogMapAllocation определяется встроенным в 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 UMDEtwLogMapAllocation(ULONGLONG hD3DAllocation,
                            ULONGLONG hDxgAllocation,
                            ULONGLONG Offset,
                            ULONGLONG Size,
                            UMDETW_ALLOCATION_USAGE Usage,
                            UMDETW_ALLOCATION_SEMANTIC Semantic)
{
    LogMapAllocation(TRUE,
                     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