Función UMDEtwLogMapAllocation (umdprovider.h)
Describe cómo se usa una asignación de memoria del subsistema de kernel de gráficos de Microsoft DirectX (Dxgkrnl.sys) o una parte de la asignación.
Sintaxis
void UMDEtwLogMapAllocation(
ULONGLONG hD3DAllocation,
ULONGLONG hDxgAllocation,
ULONGLONG Offset,
ULONGLONG Size,
UMDETW_ALLOCATION_USAGE Usage,
UMDETW_ALLOCATION_SEMANTIC Semantic
);
Parámetros
hD3DAllocation
Identificador de la asignación de Direct3D.
Para los controladores de modo usuario de Direct3D 10, el identificador será el valor del parámetro hResource de la función CreateResource(D3D10). Para los controladores en modo de usuario de Direct3D 9, el identificador será el valor del parámetro pResource que devuelve el controlador en la función CreateResource .
El controlador puede establecer este valor en NULL si usa asignaciones internamente.
hDxgAllocation
Identificador de la asignación del subsistema de kernel de gráficos de DirectX (Dxgkrnl.sys) a la que se asigna la asignación de Direct3D.
Offset
Dirección inicial, en bytes, de la asignación de Direct3D dentro de la asignación dxgkrnl.
Size
Tamaño, en bytes, de la asignación de Direct3D dentro de la asignación dxgkrnl.
Usage
Estructura UMDETW_ALLOCATION_USAGE que indica el motivo de esta asignación.
Semantic
Si el controlador en modo de usuario usa internamente la asignación, se trata de una estructura de UMDETW_ALLOCATION_SEMANTIC que indica para qué se usa la asignación.
Valor devuelto
None
Observaciones
El controlador de pantalla en modo de usuario debe tener en cuenta completamente la memoria de vídeo que asigna, por lo que debe llamar a esta función para registrar un evento cada vez que cambie la asignación.
Algunos ejemplos de cuándo llamar a esta función son:
- Una asignación de Direct3D se empaqueta en una asignación del subsistema de kernel de gráficos de DirectX (Dxgkrnl.sys).
- Una asignación dxgkrnl se crea como una superficie temporal. En este caso, establezca el parámetro hD3DAllocation en 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);
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8 |
Servidor mínimo compatible | Windows Server 2012 |
Plataforma de destino | Escritorio |
Encabezado | umdprovider.h (include Umdprovider.h) |