Función UMDEtwLogMapAllocation (umdprovider.h)

Describe cómo se usa una asignación de memoria del subsistema de kernel de gráficos (Dxgkrnl.sys) de Microsoft DirectX 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 en modo de usuario de Direct3D 10, el identificador será el valor del parámetro hResource de la función CreateResource(D3D10). En el caso de 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

La 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 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 de kernel de gráficos directX (Dxgkrnl.sys).
  • Una asignación dxgkrnl se crea como una superficie temporal. En este caso, establezca el parámetro hD3DAllocation en NULL.
UMDEtwLogMapAllocation se define insertado 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 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

   
Cliente mínimo compatible Windows 8
Servidor mínimo compatible Windows Server 2012
Plataforma de destino Escritorio
Header umdprovider.h (incluya Umdprovider.h)

Consulte también

CreateResource

CreateResource(D3D10)

UMDETW_ALLOCATION_SEMANTIC

UMDETW_ALLOCATION_USAGE