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 리소스가 없는 경우 함수는 드라이버가 이 할당에 대해 표시한 목적을 설명하는 이벤트를 기록합니다.
사용자 모드 표시 드라이버는 할당하는 비디오 메모리를 완전히 고려해야 하므로 할당이 변경 될 때마다 이벤트를 기록하기 위해 이 함수를 호출해야 합니다.
드라이버는 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 |
대상 플랫폼 | 데스크톱 |
머리글 | umdprovider.h(Umdprovider.h 포함) |