Funzione StorPortGetPhysicalAddress (storport.h)
La routine StorPortGetPhysicalAddress converte un determinato intervallo di indirizzi virtuali in un intervallo di indirizzi fisici per un'operazione DMA.
Sintassi
STORPORT_API STOR_PHYSICAL_ADDRESS StorPortGetPhysicalAddress(
[in] PVOID HwDeviceExtension,
[in, optional] PSCSI_REQUEST_BLOCK Srb,
[in] PVOID VirtualAddress,
[out] ULONG *Length
);
Parametri
[in] HwDeviceExtension
Puntatore all'estensione del dispositivo hardware. Si tratta di un'area di archiviazione hbA che il driver di porta alloca e inizializza per conto del driver miniport. I driver miniport in genere archiviano informazioni specifiche di HBA in questa estensione, ad esempio lo stato dell'HBA e gli intervalli di accesso mappati per l'HBA. Questa area è disponibile per il driver miniport nel membro DeviceExtension-HwDeviceExtension> dell'oggetto dispositivo per l'HBA immediatamente dopo che il driver miniport chiama StorPortInitialize. Il driver di porta libera questa memoria quando rimuove il dispositivo.
[in, optional] Srb
Puntatore al blocco della richiesta SCSI se l'indirizzo virtuale da convertire proviene dal membro DataBuffer di SRB o dal membro SenseInfoBuffer . In caso contrario, questo parametro deve essere NULL.
[in] VirtualAddress
Puntatore all'indirizzo virtuale di base da convertire. Se questo indirizzo virtuale rientra nell'intervallo per un dataBuffer fornito da SRB, il chiamante deve anche fornire il puntatore Srb .
[out] Length
Puntatore a un valore che indica il numero di byte mappati, a partire dall'indirizzo fisico restituito.
Valore restituito
StorPortGetPhysicalAddress restituisce l'indirizzo fisico corrispondente per un determinato indirizzo virtuale. Se l'indirizzo specificato non può essere convertito, la funzione restituisce NULL.
Commenti
Se l'indirizzo virtuale passato a StorPortGetPhysicalAddress viene ottenuto da StorPortAllocateContiguousMemorySpecifyCacheNode, il valore restituito per Length deve essere ignorato.
A partire da Windows 8, il parametro Srb può puntare a SCSI_REQUEST_BLOCK o STORAGE_REQUEST_BLOCK. Se l'identificatore di funzione nel campo Funzione di Srb è SRB_FUNCTION_STORAGE_REQUEST_BLOCK, SRB è una struttura di richiesta STORAGE_REQUEST_BLOCK .
StorPortGetPhysicalAddress usa STOR_PHYSICAL_ADDRESS per rappresentare gli indirizzi fisici.
typedef PHYSICAL_ADDRESS STOR_PHYSICAL_ADDRESS, *PSTOR_PHYSICAL_ADDRESS;
Il tipo STOR_PHYSICAL_ADDRESS è un tipo di dati indipendente dal sistema operativo che i driver miniport Storport usano per rappresentare indirizzi fisici o un indirizzo relativo al bus.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | Storport.h (include Storport.h) |
Libreria | Storport.lib |