Rutinas de soporte del controlador Storport
En esta página se clasifican algunas de las rutinas de soporte que proporciona el controlador Storport proporcionado por el sistema. Consulte storport.h para obtener una lista completa.
Para obtener una lista de las rutinas de minipuerto de controlador Storport, consulte Rutinas del controlador de minipuerto Storport.
Rutinas de soporte de acceso directo a memoria
El controlador Storport proporciona las siguientes rutinas de soporte de acceso directo a memoria (DMA).
Routine | Descripción |
---|---|
StorPortBuildScatterGatherList | Crea una lista de dispersión/recopilación para el búfer de datos especificado. |
StorPortGetScatterGatherList | Recupera la lista de dispersión/recopilación asociada para el bloque de solicitud SCSI (SRB) especificado. |
StorPortPutScatterGatherList | Libera los recursos asociados a una lista de dispersión/recopilación que creó anteriormente con una llamada a la rutina StorPortBuildScatterGatherList. |
Rutinas generales de soporte
Storport proporciona las siguientes rutinas generales de soporte.
Routine | Descripción |
---|---|
StorPortDebugPrint | Imprime una cadena de depuración en el depurador de kernel, si el depurador está asociado. |
StorPortEtwEvent2 | Publica un evento de seguimiento de eventos para Windows (ETW) en un canal de seguimiento de almacenamiento. El minipuerto puede registrar dos parámetros ETW de uso general. Los parámetros ETW se expresan como dos pares nombre-valor. |
StorPortEtwEvent4 | Publica un evento ETW en un canal de seguimiento de almacenamiento. El minipuerto puede registrar cuatro parámetros ETW de uso general. Los parámetros ETW se expresan como cuatro pares nombre-valor. |
StorPortEtwEvent8 | Publica un evento ETW en un canal de seguimiento de almacenamiento. El minipuerto puede registrar ocho parámetros ETW de uso general. Los parámetros ETW se expresan como ocho pares nombre-valor. |
StorPortGetActivityIdSrb | Recupera el identificador de actividad ETW asociado a un bloque de solicitudes. |
StorPortGetDeviceObjects | Devuelve los objetos de dispositivo asociados a la pila de dispositivos del adaptador. Los objetos de dispositivo que se devuelven son los objetos funcionales y físicos del dispositivo del adaptador y el objeto de dispositivo al que está asociado el objeto de dispositivo funcional. |
StorPortGetSystemPortNumber | Recupera el número de puerto asignado por el sistema para un adaptador de almacenamiento. |
StorPortInitializeSListHead | Inicializa el encabezado de una lista enlazada individualmente administrada por Storport. |
StorPortInterlockedFlushSList | Quita todos los elementos de una lista enlazada individualmente administrada por Storport. El acceso a la lista se sincroniza en un sistema multiprocesador |
StorPortInterlockedPopEntrySList | Quita un elemento de la parte delantera de una lista enlazada individualmente administrada por Storport. El acceso a la lista se sincroniza en un sistema multiprocesador. |
StorPortInterlockedPushEntrySList | Inserta un elemento en la parte delantera de una lista enlazada individualmente administrada por Storport. El acceso a la lista se sincroniza en un sistema multiprocesador. |
StorPortInvokeAcpiMethod | Ejecuta un método ACPI para un dispositivo de almacenamiento. |
StorPortIsCurrentOsInstallationUpgrade | Comprueba si la instalación actual de Windows es una actualización de una versión anterior o no. |
StorPortIsDeviceOperationAllowed | Permite que un minipuerto determine si se permiten operaciones para una determinada clase de administración de dispositivos. |
StorPortLogError | Notifica al controlador de puerto que se produjo un error. |
StorPortLogTelemetry | Registra un evento de telemetría de minipuerto para ayudar a diagnosticar o recopilar información útil. |
StorPortLogSystemEvent | Proporciona acceso completo a los controladores de minipuerto a las funcionalidades de la instalación de eventos del kernel de Windows, lo que permite a los controladores de minipuerto crear entradas de registro de eventos que son realmente útiles para solucionar problemas de almacenamiento. Proporciona una mejor alternativa a StorPortLogError. |
StorPortQueryDepthSList | Recupera el número de entradas de una lista vinculada administrada por Storport. |
StorPortQueryPerformanceCounter | Consulta y devuelve el valor del contador de rendimiento del sistema actual. |
StorPortQuerySystemTime | Obtiene la hora actual del sistema. |
StorPortRegistryRead | Lee los datos del Registro para el dispositivo y el valor indicados. |
StorPortRegistryReadAdapterKey | Lee las claves del adaptador del registro de hardware o dispositivo ubicadas en el Registro, en HKLM/CurrentControlSet/Enum/<Ruta de instancia>/DeviceParameters/.... |
StorPortRegistryWriteAdapterKey | Escribe las claves del adaptador del registro de hardware o dispositivo ubicadas en el Registro, en HKLM/CurrentControlSet/Enum/<Ruta de instancia>/DeviceParameters/.... |
StorPortRegistryWrite | Convierte los datos del Registro contenidos en un búfer especificado de ASCII a Unicode y, a continuación, escribe los datos en el área de almacenamiento del controlador de minipuerto por HBA. |
Rutinas de soporte de procesamiento de solicitudes de E/S
Storport proporciona las siguientes rutinas de soporte de procesamiento de solicitudes de E/S.
Routine | Descripción |
---|---|
StorPortBusy | Notifica al controlador de puerto que el adaptador está ocupado actualmente y controla las solicitudes pendientes. |
StorPortCompleteRequest | Completa todas las solicitudes pendientes estableciendo el valor de estado de SRB en SrbStatus. |
StorPortCompleteServiceIrp | La llama un controlador de minipuerto virtual Storport cuando necesita completar una solicitud que recibió en su rutina de devolución de llamada HwStorProcessServiceRequest. |
StorPortDeviceBusy | Notifica al controlador de puerto que la unidad lógica especificada está ocupada actualmente y controla las solicitudes pendientes. |
StorPortDeviceReady | Notifica al controlador de puerto que la unidad lógica indicada está lista para controlar las nuevas solicitudes. |
StorPortFreeWorker | Libera un elemento de trabajo de Storport asignado previamente por la rutina StorPortInitializeWorker. |
StorPortGetRequestInfo | Recupera la información de solicitud de E/S asociada a un bloque de solicitud SCSI (SRB) y la devuelve en una estructura STOR_REQUEST_INFO. |
StorPortInitializeWorker | Crea un nuevo elemento de trabajo de Storport que se ejecuta en un subproceso de trabajo del sistema. |
StorPortQueueWorkItem | Programa un elemento de trabajo de Storport para que se ejecute dentro del contexto de un subproceso de trabajo del sistema. |
StorPortPause | Pausa un adaptador para el período especificado. |
StorPortPauseDevice | Pausa un dispositivo de unidad lógica específico durante el período de tiempo especificado. |
StorPortReady | Notifica al controlador de puerto que el adaptador ya no está ocupado. |
StorPortResume | Reanuda un adaptador en pausa. |
StorPortResumeDevice | Reanuda una unidad lógica que se ha pausado anteriormente. |
Rutinas de soporte de inicialización
El controlador Storport proporciona las siguientes rutinas de soporte de inicialización.
Routine | Descripción |
---|---|
StorPortEnablePassiveInitialization | Habilita la rutina de devolución de llamada HwStorPassiveInitializeRoutine del minipuerto para ejecutarse en PASSIVE_LEVEL durante la inicialización del minipuerto. |
StorPortGetActiveGroupCount | Devuelve el número de grupos de procesadores que están presentes en el sistema. |
StorPortGetActiveNodeCount | Devuelve el número de nodos que están presentes en el sistema. |
StorPortGetBusData | Recupera la información de configuración específica del bus necesaria para inicializar el HBA. |
StorPortGetCurrentProcessorNumber | Recupera el número de procesador actual del kernel. |
StorPortGetGroupAffinity | Construye una máscara de los procesadores activos en un grupo solicitado. |
StorPortGetHighestNodeNumber | Devuelve el número de nodo más grande posible en el sistema. |
StorPortGetLogicalProcessorRelationship | Devuelve información de relación para uno o varios tipos especificados. Estos tipos incluyen grupos, paquetes físicos y nodos en el sistema host. La información que se devuelve incluye máscaras de afinidad de procesador compuestas por procesadores lógicos en el sistema host. Estos procesadores lógicos comparten los tipos de relación especificados. |
StorPortGetLogicalUnit | Devuelve un puntero al área de almacenamiento por unidad lógica del controlador de minipuerto. |
StorPortGetNodeAffinity | Construye una máscara de los procesadores activos en un nodo de acceso a memoria no único (NUMA) solicitado. |
StorPortGetStartIoPerfParams | Coloca los parámetros de rendimiento de una solicitud de E/S determinada en una estructura STARTIO_PERFORMANCE_PARAMETERS. |
StorPortInitialize | Inicializa los parámetros del controlador de puerto y los datos de extensión. StorPortInitilize también guarda la información del adaptador proporcionada desde el controlador de minipuerto. |
StorPortInitializePerfOpts | Inicializa las optimizaciones de rendimiento que admiten tanto el controlador de minipuerto como el controlador Storport mediante una estructura PERF_CONFIGURATION_DATA. |
StorPortSetAdapterBusType | Se usa para ajustar BusType del adaptador en función de su configuración actual. Establecer BusType con esta rutina permite invalidar la propiedad global establecida en el INF del minipuerto sin tener que reinstalar el controlador. Esta funcionalidad es útil para escenarios como la compatibilidad con RAID o la compatibilidad con varios adaptadores con un tipo de bus diferente. |
StorPortSetBusDataByOffset | Escribe información de configuración específica del bus. |
StorPortSetDeviceQueueDepth | Establece la profundidad máxima de la cola de dispositivos para el dispositivo indicado. |
StorPortSetPowerSettingNotificationGuids | Permite que un minipuerto reciba notificaciones de configuración de energía. El minipuerto registra una matriz de GUID que identifican la configuración de energía para recibir notificaciones de cambio de energía. |
StorPortSetUnitAttributes | Registra los atributos de energía de un dispositivo de unidad de almacenamiento con el controlador Storport. |
Rutinas de soporte de interrupción
El controlador Storport proporciona las siguientes rutinas de soporte de interrupción.
Routine | Descripción |
---|---|
StorPortGetMSIInfo | Recupera la información de interrupción señalizada por mensaje (MSI) para el mensaje especificado. |
StorPortSynchronizeAccess | Proporciona acceso sincronizado a la extensión de dispositivo de un controlador de minipuerto. |
StorPortInitializeDpc | Inicializa una llamada al procedimiento diferido de Storport (DPC). |
StorPortIssueDpc | Emite un DPC de Storport. |
StorPortStallExecution | Detiene el controlador del minipuerto. |
Rutinas de soporte de bloqueo
El controlador Storport proporciona las siguientes rutinas de soporte de bloqueo.
Routine | Descripción |
---|---|
StorPortAcquireMSISpinLock | Adquiere el bloqueo por subproceso de interrupción señalizada por mensaje (MSI) asociado al mensaje especificado. |
StorPortAcquireSpinLock | Adquiere el bloqueo por subproceso especificado. |
StorPortReleaseMSISpinLock | Libera un bloqueo por subproceso de MSI adquirido previamente para el mensaje especificado. |
StorPortReleaseSpinLock | Libera un bloqueo por subproceso adquirido por StorPortAcquireSpinLock. |
Rutinas de soporte de administración de memoria
El controlador Storport proporciona las siguientes rutinas de soporte de administración de memoria.
Routine | Descripción |
---|---|
StorPortAllocateContiguousMemorySpecifyCacheNode | Asigna un intervalo de memoria no paginada físicamente contigua y no paginada. |
StorPortAllocateMdl | Asigna una MDL para describir la memoria del grupo no paginada especificada. |
StorPortAllocatePool | Asigna un bloque de memoria de grupo no contigua y no paginada. |
StorPortAllocateRegistryBuffer | Asigna un búfer que puede usar un minipuerto para leer y escribir datos del Registro. |
StorPortBuildMdlForNonPagedPool | Actualiza la MDL para describir la memoria no paginada asociada. |
StorPortConvertUlongToPhysicalAddress | Convierte una dirección larga sin firmar en una dirección física. |
StorPortConvertPhysicalAddressToULong64 | Convierte una dirección física en un valor de ULONG64. |
StorPortFreeMdl | Libera una lista de descriptores de memoria (MDL) que describe la memoria del grupo no paginada. |
StorPortFreeContiguousMemorySpecifyCache | Desasigna un intervalo de memoria no almacenada en caché en la parte no paginada del espacio de direcciones del sistema. |
StorPortFreePool | Libera un bloque de memoria asignado previamente por una llamada a la rutina StorPortAllocatePool. |
StorPortFreeRegistryBuffer | Libera el búfer asignado para almacenar los datos del Registro. |
StorPortGetDataInBufferMdl | Devuelve una MDL asociada al búfer de datos de entrada de un bloque de solicitud SCSI (SRB). |
StorPortGetDataInBufferScatterGatherList | Devuelve la lista de recopilación y dispersión asociada al búfer de datos de entrada de un bloque de solicitud SCSI (SRB). |
StorPortGetDataInBufferSystemAddress | Devuelve la dirección del sistema para el búfer de datos de entrada de un bloque de solicitud SCSI (SRB). |
StorPortGetOriginalMdl | Devuelve la MDL asociada al SRB indicado. |
StorPortGetVirtualAddress | Obtiene una dirección virtual que se asigna a la dirección física indicada. |
StorPortGetPhysicalAddress | Convierte un intervalo de direcciones virtuales determinado en un intervalo de direcciones físicas para una operación DMA. |
StorPortGetSystemAddress | Devuelve una dirección virtual en el espacio del sistema para el búfer de datos del bloque de solicitud SCSI (SRB) especificado. |
StorPortGetUncachedExtension | Asigna un búfer común sin almacenar en caché que puede compartir la CPU y el dispositivo. |
StorPortMarkDumpMemory | Un minipuerto debe marcar la memoria utilizada para el archivo de volcado o el archivo de hibernación. La memoria marcada se conserva y permanece válida después de una reanudación de la operación de hibernación. La memoria que se va a marcar se especifica mediante una longitud de dirección e intervalo en una llamada a StorPortMarkDumpMemory. |
StorPortMoveMemory | Copia la memoria de un búfer a otro. |
Rutinas de soporte de notificaciones
El controlador Storport proporciona las siguientes rutinas de soporte de notificación.
Routine | Descripción |
---|---|
StorPortAsyncNotificationDetected | Notifica al controlador Storport de un evento de cambio de estado del dispositivo de almacenamiento. |
StorPortNotification | Notifica al controlador Storport ciertos eventos y condiciones. |
StorPortStateChangeDetected | Notifica al controlador de puerto Storport un cambio de estado para un número de unidad lógica (LUN), el puerto del adaptador de bus host (HBA) o el dispositivo de destino. |
Rutinas de soporte de E/S de puerto y registro
El controlador Storport proporciona las siguientes rutinas de soporte de E/S de puerto y registro.
Routine | Descripción |
---|---|
StorPortGetDeviceBase | Asigna una dirección de E/S al espacio de direcciones del sistema. |
StorPortFreeDeviceBase | Libera un intervalo de memoria de E/S del dispositivo que StorPortGetDeviceBase asignó previamente. |
StorPortReadPortBufferUchar | Lee un valor de una dirección de puerto especificada. |
StorPortReadPortBufferUlong | Lee un valor de una dirección de puerto especificada. |
StorPortReadPortBufferUshort | Lee un valor de una dirección de puerto especificada. |
StorPortReadPortUchar | Lee un valor de una dirección de puerto especificada. |
StorPortReadPortUlong | Lee un valor de una dirección de puerto especificada. |
StorPortReadPortUshort | Lee un valor de una dirección de puerto especificada. |
StorPortReadRegisterBufferUchar | Lee un valor de una dirección de registro especificada. |
StorPortReadRegisterBufferUlong | Lee un valor de una dirección de registro especificada. |
StorPortReadRegisterBufferUlong64 | Lee un número especificado de valores de ULONG64 de la dirección de registro de 64 bits especificada en un búfer. |
StorPortReadRegisterBufferUshort | Lee un valor de una dirección de registro especificada. |
StorPortReadRegisterUchar | Lee un valor de una dirección de registro especificada. |
StorPortReadRegisterUlong | Lee un valor de una dirección de registro especificada. |
StorPortReadRegisterUlong64 | Lee un valor de 64 bits de una dirección de registro de 64 bits especificada. |
StorPortReadRegisterUshort | Lee un valor de una dirección de registro especificada. |
StorPortValidateRange | Determina si otro adaptador usa un intervalo especificado de direcciones de E/S. Esta rutina está obsoleta en Windows NT 4.0 y sistemas operativos posteriores. |
StorPortWritePortBufferUchar | Escribe un valor en una dirección de registro especificada. |
StorPortWritePortBufferUlong | Escribe un valor en una dirección de registro especificada. |
StorPortWritePortBufferUshort | Escribe un valor en una dirección de registro especificada. |
StorPortWritePortUchar | Escribe un valor en una dirección de registro especificada. |
StorPortWritePortUlong | Escribe un valor en una dirección de registro especificada. |
StorPortWritePortUshort | Escribe un valor en una dirección de registro especificada. |
StorPortWriteRegisterBufferUchar | Transfiere un número determinado de bytes sin signo de un búfer al HBA. |
StorPortWriteRegisterBufferUlong | Transfiere un número determinado de valores de ULONG de un búfer al HBA. |
StorPortWriteRegisterBufferUlong64 | Escribe un número especificado de valores de ULONG64 de una dirección de registro de 64 bits especificada. |
StorPortWriteRegisterBufferUshort | Transfiere un número determinado de valores de USHORT de un búfer al HBA. |
StorPortWriteRegisterUchar | Transfiere un número determinado de valores de caracteres de un búfer a la dirección de registro de HBA indicada. |
StorPortWriteRegisterUlong | Transfiere un valor ULONG a la dirección de registro de HBA indicada. |
StorPortWriteRegisterUlong64 | Escribe un valor ULONG64 en la dirección de registro especificada. |
StorPortWriteRegisterUshort | Transfiere un valor ULONG a la dirección de registro de HBA indicada. |
Rutinas de soporte de administración de energía en tiempo de ejecución
El controlador Storport proporciona las siguientes rutinas de soporte de administración de energía en tiempo de ejecución.
Routine | Descripción |
---|---|
StorPortInitializePoFxPower | Registra un dispositivo de almacenamiento con el marco de administración de energía (PoFx). |
StorPortPoFxActivateComponent | Incrementa el recuento de referencias de activación en el componente especificado de un dispositivo de almacenamiento. |
StorPortPoFxIdleComponent | Reduce el recuento de referencias de activación de un componente especificado de un dispositivo de almacenamiento. |
StorPortPoFxPowerControl | Envía una solicitud de control de energía al marco de administración de energía (PoFx) para reenviarla al complemento del motor de potencia (PEP). |
StorPortPoFxSetComponentLatency | Especifica la latencia máxima que se puede tolerar en la transición de inactivo a activo en el componente de dispositivo de almacenamiento especificado. |
StorPortPoFxSetComponentResidency | Establece el tiempo estimado durante el cual es probable que un componente del dispositivo de almacenamiento permanezca inactivo después de que el componente entre en la condición de inactividad. |
Rutinas de soporte de temporizador
El controlador Storport proporciona las siguientes rutinas de soporte de temporizador.
Routine | Descripción |
---|---|
StorPortFreeTimer | Libera un objeto de contexto del temporizador de Storport creado previamente por la rutina StorPortInitializeTimer. |
StorPortInitializeTimer | Crea un objeto de contexto de temporizador de Storport. |
StorPortRequestTimer | Programa un evento de devolución de llamada para un objeto de contexto del temporizador de Storport. |