UMDEtwLogUnmapAllocation 関数 (umdprovider.h)
Microsoft DirectX グラフィックス カーネル サブシステム (Dxgkrnl.sys) のメモリ割り当て、または割り当ての一部が使用されなくなったことを示します。 割り当てが破棄されるかどうかにかかわらず、この関数を呼び出します。
構文
void UMDEtwLogUnmapAllocation(
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 構造です。
戻り値
なし
解説
呼び出されると、この関数は、割り当てが使用されている API リソース(または使用されていた API リソース)を記述するイベントをログに記録します。 API リソースが割り当てに関連付けられていない場合、この関数は、ドライバーがこの割り当てに対して示した目的を説明するイベントをログに記録します。
ユーザー モードディスプレイ ドライバーは、割り当てるビデオ メモリを完全に考慮する必要があるため、割り当てが変更されるたびにイベントをログに記録するには、この関数を呼び出す必要があります。
ドライバーは、UMDEtwLogMapAllocation と同じパラメーター値を UMDEtwLogUnmapAllocation に渡す必要があります。
UMDEtwLogUnmapAllocation は、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 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);
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 |
サポートされている最小のサーバー | Windows Server 2012 |
対象プラットフォーム | デスクトップ |
Header | umdprovider.h (Umdprovider.h を含む) |