Fonction UMDEtwLogUnmapAllocation (umdprovider.h)
Indique qu’une allocation de mémoire du sous-système du noyau graphique (Dxgkrnl.sys) Microsoft DirectX, ou une partie de l’allocation, n’est plus utilisée. Appelez cette fonction si l’allocation est en cours de destruction ou non.
Syntaxe
void UMDEtwLogUnmapAllocation(
ULONGLONG hD3DAllocation,
ULONGLONG hDxgAllocation,
ULONGLONG Offset,
ULONGLONG Size,
UMDETW_ALLOCATION_USAGE Usage,
UMDETW_ALLOCATION_SEMANTIC Semantic
);
Paramètres
hD3DAllocation
Handle de l’allocation Direct3D.
Pour les pilotes en mode utilisateur Direct3D 10, le handle est la valeur du paramètre hResource de la fonction CreateResource(D3D10). Pour les pilotes en mode utilisateur Direct3D 9, le handle est la valeur du paramètre pResource que le pilote retourne dans la fonction CreateResource .
Le pilote peut définir cette valeur sur NULL s’il utilise des allocations en interne.
hDxgAllocation
Handle pour l’allocation de sous-système du noyau graphique (Dxgkrnl.sys) DirectX à laquelle l’allocation Direct3D est mappée.
Offset
Adresse de départ, en octets, de l’allocation Direct3D au sein de l’allocation Dxgkrnl.
Size
Taille, en octets, de l’allocation Direct3D au sein de l’allocation Dxgkrnl.
Usage
Structure UMDETW_ALLOCATION_USAGE qui indique la raison de ce mappage.
Semantic
Si l’allocation est utilisée en interne par le pilote en mode utilisateur, il s’agit d’une structure UMDETW_ALLOCATION_SEMANTIC qui indique à quoi sert l’allocation.
Valeur de retour
None
Remarques
Lorsqu’elle est appelée, cette fonction journalise un événement qui décrit la ressource d’API pour laquelle l’allocation est ou était utilisée. Si aucune ressource d’API n’a été associée à l’allocation, la fonction journalise un événement qui décrit l’objectif indiqué par le pilote pour cette allocation.
Le pilote d’affichage en mode utilisateur doit entièrement tenir compte de la mémoire vidéo qu’il alloue. Il doit donc appeler cette fonction pour journaliser un événement chaque fois que l’allocation change.
Le pilote doit transmettre les mêmes valeurs de paramètres à UMDEtwLogUnmapAllocation qu’à UMDEtwLogMapAllocation.
UMDEtwLogUnmapAllocation est défini inline dans Umdprovider.h comme suit :
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);
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8 |
Serveur minimal pris en charge | Windows Server 2012 |
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | umdprovider.h (include Umdprovider.h) |