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

Vedi anche

MEMORY_CACHING_TYPE