Compartir a través de


Función StorPortGetPhysicalAddress (storport.h)

La rutina StorPortGetPhysicalAddress convierte un intervalo de direcciones virtuales determinado en un intervalo de direcciones físicos para una operación DMA.

Sintaxis

STORPORT_API STOR_PHYSICAL_ADDRESS StorPortGetPhysicalAddress(
  [in]           PVOID               HwDeviceExtension,
  [in, optional] PSCSI_REQUEST_BLOCK Srb,
  [in]           PVOID               VirtualAddress,
  [out]          ULONG               *Length
);

Parámetros

[in] HwDeviceExtension

Puntero a la extensión de dispositivo de hardware. Se trata de un área de almacenamiento por HBA que el controlador de puerto asigna e inicializa en nombre del controlador de minipuerto. Los controladores de minipuerto suelen almacenar información específica de HBA en esta extensión, como el estado del HBA y los intervalos de acceso asignados para el HBA. Esta área está disponible para el controlador de minipuerto en el miembro DeviceExtension-HwDeviceExtension> del objeto de dispositivo para el HBA inmediatamente después de que el controlador de miniporte llame a StorPortInitialize. El controlador de puerto libera esta memoria cuando quita el dispositivo.

[in, optional] Srb

Puntero al bloque de solicitud SCSI si la dirección virtual que se va a convertir procede del miembro DataBuffer o del miembro SenseInfoBuffer de SRB. De lo contrario, este parámetro debe ser NULL.

[in] VirtualAddress

Puntero a la dirección virtual base que se va a convertir. Si esta dirección virtual está dentro del intervalo de un DataBuffer proporcionado por SRB, el autor de la llamada también debe proporcionar el puntero Srb .

[out] Length

Puntero a un valor que indica el número de bytes asignados, empezando por la dirección física devuelta.

Valor devuelto

StorPortGetPhysicalAddress devuelve la dirección física correspondiente para una dirección virtual determinada. Si no se puede convertir la dirección especificada, la función devuelve NULL.

Comentarios

Si la dirección virtual que se pasa a StorPortGetPhysicalAddress se obtiene de StorPortAllocateContiguousMemorySpecifyCacheNode, se debe omitir el valor devuelto para Length .

A partir de Windows 8, el parámetro Srb puede apuntar a SCSI_REQUEST_BLOCK o a STORAGE_REQUEST_BLOCK. Si el identificador de función del campo Función de Srb es SRB_FUNCTION_STORAGE_REQUEST_BLOCK, el SRB es una estructura de solicitud STORAGE_REQUEST_BLOCK .

StorPortGetPhysicalAddress usa STOR_PHYSICAL_ADDRESS para representar direcciones físicas.

typedef PHYSICAL_ADDRESS STOR_PHYSICAL_ADDRESS, *PSTOR_PHYSICAL_ADDRESS;

El tipo de STOR_PHYSICAL_ADDRESS es un tipo de datos independiente del sistema operativo que usan los controladores de miniport de Storport para representar una dirección física o una dirección relativa al bus.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado storport.h (incluya Storport.h)
Library Storport.lib

Consulte también

SCSI_REQUEST_BLOCK

STORAGE_REQUEST_BLOCK

ScsiPortGetPhysicalAddress