Funzione UMDEtwLogMapAllocation (umdprovider.h)
Descrive in che modo viene usato un sottosistema del kernel grafico Microsoft DirectX (Dxgkrnl.sys) o una parte dell'allocazione.
Sintassi
void UMDEtwLogMapAllocation(
ULONGLONG hD3DAllocation,
ULONGLONG hDxgAllocation,
ULONGLONG Offset,
ULONGLONG Size,
UMDETW_ALLOCATION_USAGE Usage,
UMDETW_ALLOCATION_SEMANTIC Semantic
);
Parametri
hD3DAllocation
Handle per l'allocazione Direct3D.
Per i driver in modalità utente Direct3D 10, l'handle sarà il valore del parametro hResource della funzione CreateResource(D3D10). Per i driver in modalità utente Direct3D 9, l'handle sarà il valore del parametro pResource restituito dal driver nella funzione CreateResource .
Il driver può impostare questo valore su NULL se usa le allocazioni internamente.
hDxgAllocation
Handle per l'allocazione del kernel grafico DirectX (Dxgkrnl.sys) a cui viene eseguito il mapping dell'allocazione Direct3D.
Offset
Indirizzo iniziale, in byte, dell'allocazione Direct3D all'interno dell'allocazione Dxgkrnl.
Size
Dimensioni, in byte, dell'allocazione Direct3D all'interno dell'allocazione Dxgkrnl.
Usage
Struttura UMDETW_ALLOCATION_USAGE che indica il motivo di questo mapping.
Semantic
Se l'allocazione viene usata internamente dal driver in modalità utente, si tratta di una struttura UMDETW_ALLOCATION_SEMANTIC che indica l'allocazione utilizzata.
Valore restituito
nessuno
Osservazioni
Il driver di visualizzazione in modalità utente deve tenere conto completamente della memoria video allocata, quindi deve chiamare questa funzione per registrare un evento ogni volta che l'allocazione cambia.
Esempi di quando chiamare questa funzione sono:
- Un'allocazione Direct3D viene inserita in un sottosistema del kernel grafico DirectX (Dxgkrnl.sys).
- Un'allocazione Dxgkrnl viene creata come superficie di graffio. In questo caso, impostare il parametro hD3DAllocation su 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);
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 |
Server minimo supportato | Windows Server 2012 |
Piattaforma di destinazione | Desktop |
Intestazione | umdprovider.h (includere Umdprovider.h) |