Funzione UMDEtwLogUnmapAllocation (umdprovider.h)
Indica che l'allocazione di memoria di un sottosistema kernel grafico DirectX (Dxgkrnl.sys) o una parte dell'allocazione non viene più utilizzata. Chiamare questa funzione indipendentemente dal fatto che l'allocazione venga eliminata definitivamente.
Sintassi
void UMDEtwLogUnmapAllocation(
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 internamente le allocazioni.
hDxgAllocation
Handle per l'allocazione del sottosistema del kernel grafico DirectX (Dxgkrnl.sys) a cui è mappata l'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 per.
Valore restituito
nessuno
Osservazioni
Quando viene chiamato, questa funzione registra un evento che descrive la risorsa API per cui è o è stata usata l'allocazione. Se nessuna risorsa API è stata associata all'allocazione, la funzione registra un evento che descrive lo scopo indicato dal driver per questa allocazione.
Il driver di visualizzazione in modalità utente deve tenere completamente conto della memoria video allocata, quindi deve chiamare questa funzione per registrare un evento ogni volta che l'allocazione cambia.
Il driver deve passare gli stessi valori dei parametri a UMDEtwLogUnmapAllocation come è stato fatto a UMDEtwLogMapAllocation.
UMDEtwLogUnmapAllocation è definito inline in Umdprovider.h come segue:
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);
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 |
Server minimo supportato | Windows Server 2012 |
Piattaforma di destinazione | Desktop |
Intestazione | umdprovider.h (include Umdprovider.h) |