共用方式為


UMDEtwLogMapAllocation 函式 (umdprovider.h)

描述如何使用 Microsoft DirectX 圖形核心子系統 (Dxgkrnl.sys) 記憶體配置或部分配置。

語法

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

參數

hD3DAllocation

Direct3D 配置的句柄。

針對 Direct3D 10 使用者模式驅動程式,句柄將是 CreateResource (D3D10) 函式的 hResource 參數值。 針對 Direct3D 9 使用者模式驅動程式,句柄會是驅動程式在 CreateResource 函式中傳回的 pResource 參數值。

如果驅動程式在內部使用配置,驅動程式可以將此值設定為 NULL

hDxgAllocation

DirectX 圖形核心子系統的句柄 (Dxgkrnl.sys) Direct3D 配置對應的配置。

Offset

Dxgkrnl 配置內 Direct3D 配置的起始位址,以位元組為單位。

Size

Dxgkrnl 配置內 Direct3D 配置的大小,以位元組為單位。

Usage

表示此對應原因 的UMDETW_ALLOCATION_USAGE 結構。

Semantic

如果使用者模式驅動程式在內部使用配置,這是 UMDETW_ALLOCATION_SEMANTIC 結構,指出配置用途。

傳回值

備註

使用者模式顯示驅動程式必須完全考慮其配置的視訊記憶體,因此必須在每次配置變更時呼叫此函式來記錄事件。

呼叫此函式的範例包括:

  • Direct3D 配置會封裝到 DirectX 圖形核心子系統 (Dxgkrnl.sys) 配置中。
  • Dxgkrnl 配置會建立為臨時表面。 在此情況下,請將 hD3DAllocation 參數設定為 NULL
UMDEtwLogMapAllocation 在 Umdprovider.h 中定義為:
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);
}

規格需求

需求
最低支援的用戶端 Windows 8
最低支援的伺服器 Windows Server 2012
目標平台 桌面
標頭 umdprovider.h (包含 Umdprovider.h)

另請參閱

CreateResource

CreateResource (D3D10)

UMDETW_ALLOCATION_SEMANTIC

UMDETW_ALLOCATION_USAGE