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 tanto si se destruye la asignación como si no.

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 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

Cuando se llama a esta función, registra un evento que describe para qué recurso de API se usa la asignación o para el que se está usando. Si no hay ningún recurso de API asociado a la asignación, la función registra un evento que describe el propósito que el controlador ha indicado 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 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 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

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

Vea también

CreateResource

CreateResource(D3D10)

UMDETW_ALLOCATION_SEMANTIC

UMDETW_ALLOCATION_USAGE

UMDEtwLogMapAllocation