Función UMDEtwLogUnmapAllocation (umdprovider.h)
Indica que ya no 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. Llame a esta función si se está destruyendo o no la asignación.
Sintaxis
void UMDEtwLogUnmapAllocation(
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
Cuando se llama a esta función, registra un evento que describe el recurso de API para el que se usa la asignación o para el que se usa. Si no se ha asociado ningún recurso de API a la asignación, la función registra un evento que describe el propósito que el controlador indicó para esta asignación.
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.
El controlador debe pasar los mismos valores de parámetros a UMDEtwLogUnmapAllocation , como hizo con UMDEtwLogMapAllocation.
UMDEtwLogUnmapAllocation se define en línea en Umdprovider.h como:
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);
}
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) |