Функция 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.
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) |