UMDEtwLogMapAllocation-Funktion (umdprovider.h)

Beschreibt, wie die Speicherbelegung eines Microsoft DirectX-Grafikkernsubsystems (Dxgkrnl.sys) oder ein Teil der Zuordnung verwendet wird.

Syntax

void UMDEtwLogMapAllocation(
  ULONGLONG                  hD3DAllocation,
  ULONGLONG                  hDxgAllocation,
  ULONGLONG                  Offset,
  ULONGLONG                  Size,
  UMDETW_ALLOCATION_USAGE    Usage,
  UMDETW_ALLOCATION_SEMANTIC Semantic
);

Parameter

hD3DAllocation

Ein Handle für die Direct3D-Zuordnung.

Für Direct3D 10-Benutzermodustreiber ist das Handle der Wert des hResource-Parameters der CreateResource(D3D10) -Funktion. Für Direct3D 9-Benutzermodustreiber ist das Handle der Wert des pResource-Parameters , den der Treiber in der CreateResource-Funktion zurückgibt.

Der Treiber kann diesen Wert auf NULL festlegen, wenn er Zuordnungen intern verwendet.

hDxgAllocation

Ein Handle für die Zuordnung des DirectX-Grafikkernsubsystems (Dxgkrnl.sys), dem die Direct3D-Zuordnung zugeordnet ist.

Offset

Die Anfangsadresse der Direct3D-Zuordnung in Byte innerhalb der Dxgkrnl-Zuordnung.

Size

Die Größe der Direct3D-Zuordnung innerhalb der Dxgkrnl-Zuordnung in Byte.

Usage

Eine UMDETW_ALLOCATION_USAGE-Struktur , die den Grund für diese Zuordnung angibt.

Semantic

Wenn die Zuordnung intern vom Benutzermodustreiber verwendet wird, handelt es sich um eine UMDETW_ALLOCATION_SEMANTIC Struktur, die angibt, wofür die Zuordnung verwendet wird.

Rückgabewert

Keine

Bemerkungen

Der Anzeigetreiber für den Benutzermodus muss den zugewiesenen Videospeicher vollständig berücksichtigen. Daher muss er diese Funktion aufrufen, um jedes Mal, wenn sich die Zuordnung ändert, ein Ereignis zu protokollieren.

Beispiele für den Aufruf dieser Funktion sind:

  • Eine Direct3D-Zuordnung wird in eine DirectX-Grafikkernsubsystemzuordnung (Dxgkrnl.sys) gepackt.
  • Eine Dxgkrnl-Zuordnung wird als Kratzfläche erstellt. Legen Sie in diesem Fall den hD3DAllocation-Parameter auf NULL fest.
UMDEtwLogMapAllocation ist inline in Umdprovider.h wie folgt definiert:
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);
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8
Unterstützte Mindestversion (Server) Windows Server 2012
Zielplattform Desktop
Kopfzeile umdprovider.h (include Umdprovider.h)

Weitere Informationen

CreateResource

CreateResource(D3D10)

UMDETW_ALLOCATION_SEMANTIC

UMDETW_ALLOCATION_USAGE