UMDEtwLogUnmapAllocation 函数 (umdprovider.h)
指示不再使用 (Dxgkrnl.sys) 内存分配或部分分配的 Microsoft DirectX 图形内核子系统。 无论分配是否被销毁,都调用此函数。
语法
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 资源,则函数会记录一个事件,该事件描述驱动程序为此分配指示的用途。
用户模式显示驱动程序必须完全考虑其分配的视频内存,因此它必须调用此函数,以便在每次分配更改时记录事件。
驱动程序应将相同的参数值传递给 UMDEtwLogUnmapAllocation ,就像将相同的参数值传递给 UMDEtwLogMapAllocation。
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 |
目标平台 | 桌面 |
标头 | umdprovider.h (包括 Umdprovider.h) |