DXGKCB_MAP_MEMORY funzione di callback (dispmprt.h)
La funzione DxgkCbMapMemory esegue il mapping di un intervallo di indirizzi fisici tradotti (associati a una risorsa di memoria assegnata a una scheda di visualizzazione) nello spazio di sistema o nello spazio degli indirizzi virtuali di un processo in modalità utente.
Sintassi
DXGKCB_MAP_MEMORY DxgkcbMapMemory;
NTSTATUS DxgkcbMapMemory(
[in] HANDLE DeviceHandle,
[in] PHYSICAL_ADDRESS TranslatedAddress,
[in] ULONG Length,
[in] BOOLEAN InIoSpace,
[in] BOOLEAN MapToUserMode,
[in] MEMORY_CACHING_TYPE CacheType,
[out] PVOID *VirtualAddress
)
{...}
Parametri
[in] DeviceHandle
Handle che rappresenta una scheda di visualizzazione. Il driver miniport visualizzato in precedenza ha ottenuto questo handle nel membro DeviceHandle della struttura DXGKRNL_INTERFACE passata a DxgkDdiStartDevice.
[in] TranslatedAddress
Indirizzo fisico convertito di base dell'intervallo di memoria da mappare. Il driver miniport visualizzato in precedenza ha ottenuto questo indirizzo chiamando DxgkCbGetDeviceInformation.
[in] Length
Dimensioni, in byte, dell'intervallo da mappare.
[in] InIoSpace
Valore booleano che specifica se l'intervallo è nello spazio di I/O (TRUE) o spazio di memoria (FALSE).
[in] MapToUserMode
Valore booleano che specifica se l'intervallo viene mappato nello spazio in modalità utente o nello spazio di sistema. Se TRUE, l'intervallo viene mappato nello spazio indirizzi virtuale (modalità utente) del processo corrente. Se FALSE, l'intervallo viene mappato nello spazio di sistema. Se InIoSpace è TRUE, questo parametro viene ignorato.
[in] CacheType
Enumeratore MEMORY_CACHING_TYPE che specifica il comportamento di memorizzazione nella cache dell'intervallo mappato.
[out] VirtualAddress
Puntatore a una variabile che riceve l'indirizzo dell'inizio dell'intervallo mappato. Il modo in cui viene eseguito l'accesso all'intervallo mappato dipende dai valori di InIoSpace e MapToUserMode. La tabella seguente riepiloga i diversi modi in cui viene eseguito l'accesso all'intervallo mappato.
Valore di InIoSpace | MapToUserMode è FALSE | MapToUserMode è TRUE |
---|---|---|
FALSE | READ_REGISTER_X WRITE_REGISTER_X | Il codice in modalità utente esegue l'accesso ordinario alla memoria. |
true | READ_PORT_X WRITE_PORT_X | Non è possibile. |
Valore restituito
DxgkCbMapMemory restituisce STATUS_SUCCESS se ha esito positivo. In caso contrario, restituisce uno dei codici di errore definiti in Ntstatus.h.
Commenti
Il tipo di dati PHYSICAL_ADDRESS è definito in Ntdef.h.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista |
Piattaforma di destinazione | Desktop |
Intestazione | dispmprt.h (include Dispmprt.h) |
IRQL | PASSIVE_LEVEL |