Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Décrit comment un sous-système de noyau graphique Microsoft DirectX (Dxgkrnl.sys) allocation de mémoire, ou une partie de l’allocation, est utilisé.
Syntaxe
void UMDEtwLogMapAllocation(
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 si elle utilise des allocations en interne.
hDxgAllocation
Handle vers l’allocation du noyau graphique DirectX (Dxgkrnl.sys) à laquelle l’allocation Direct3D est mappée.
Offset
Adresse de départ, en octets, de l’allocation Direct3D dans l’allocation Dxgkrnl.
Size
Taille, en octets, de l’allocation Direct3D dans 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 l’utilisation de l’allocation.
Valeur de retour
Aucun
Remarques
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.
Voici quelques exemples de l’appel de cette fonction :
- Une allocation Direct3D est empaquetée dans un sous-système de noyau graphique DirectX (Dxgkrnl.sys).
- Une allocation Dxgkrnl est créée en tant que surface de travail. Dans ce cas, définissez le paramètre hD3DAllocation sur NULL.
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);
}
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 8 |
serveur minimum pris en charge | Windows Server 2012 |
plateforme cible | Bureau |
d’en-tête | umdprovider.h (include Umdprovider.h) |