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


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

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

None

Remarks

При вызове эта функция регистрирует событие, описывающее, для какого ресурса 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 (включая Umdprovider.h)

См. также раздел

CreateResource

CreateResource(D3D10)

UMDETW_ALLOCATION_SEMANTIC

UMDETW_ALLOCATION_USAGE

UMDEtwLogMapAllocation