次の方法で共有


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

Direct3D 割り当てがマップされる DirectX グラフィックス カーネル サブシステム (Dxgkrnl.sys) の割り当てへのハンドル。

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