Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Описывает, как используется подсистема ядра графики 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) |