Rutinas de compatibilidad del controlador de puerto ATA

En esta página se clasifican las rutinas de soporte proporcionadas por el controlador de puerto ATA proporcionado por el sistema.

Para obtener una lista de rutinas de minipuerto de controladores de ATA, consulta Controladores de minipuerto de ATA.

Rutina de inicialización

El controlador de puerto de ATA proporciona la siguiente rutina de inicialización.

Rutina Descripción
AtaPortInitializeEx Inicializa los controladores de puerto y minipuerto.

Rutinas para el acceso al espacio de configuración PCI

El controlador de puerto ATA proporciona las siguientes rutinas para ayudarle a leer y modificar el contenido del espacio de configuración PCI del dispositivo.

Rutina Descripción
AtaPortGetBusData Recupera datos de la ubicación especificada dentro del espacio de configuración pci del dispositivo.
AtaPortSetBusData almacena los datos en el espacio de configuración PCI del dispositivo indicado en el desplazamiento especificado.

Rutinas para procesar solicitudes de E/S

El controlador de puerto de ATA proporciona las siguientes rutinas de soporte técnico de procesamiento de solicitudes de E/S.

Rutina Descripción
AtaPortGetScatterGatherList Recupera la lista de dispersión y recopilación asociada a esta solicitud.
AtaPortGetPhysicalAddress Convierte el intervalo de direcciones virtuales en el intervalo de direcciones físico.
AtaPortGetDeviceBase Devuelve una dirección base lógica asignada que se usa para comunicarse con un adaptador de bus host (HBA).
AtaPortGetUncachedExtension Asigna un búfer común sin almacenar en caché compartido por la CPU y el dispositivo.
AtaPortBuildRequestSenseIrb Compila y devuelve un IRB para el código de operación SCSIOP_REQUEST_SENSE.
AtaPortReleaseRequestSenseIrb Libera el IRB de sentido de solicitud asignado mediante AtaPortBuildRequestSenseIrb.
AtaPortCompleteAllActiveRequests Completa todos los IRB activos para el dispositivo indicado.
AtaPortCompleteRequest Completa el IRB indicado.

Rutinas de devolución de llamada

El controlador de minipuerto usa varias rutinas para solicitar una devolución de llamada del controlador de puerto.

Rutina Descripción
AtaPortRequestWorkerRoutine Solicita una rutina de trabajo.
AtaPortRequestSynchronizedRoutine Solicita la sincronización con la rutina del servicio de interrupción (ISR).
AtaPortControllerSyncRoutine Proporciona acceso sincronizado a estructuras de datos que se comparten entre todos los canales de un controlador.
AtaPortRequestTimer Solicita una devolución de llamada del temporizador.

Rutinas que notifican un cambio de configuración

Las rutinas siguientes permiten al controlador de minipuerto notificar al controlador de puerto ATA los cambios en la configuración de los dispositivos conectados al canal.

Rutina Descripción
AtaPortBusChangeDetected Notifica al controlador de puerto los cambios en la configuración del dispositivo en el canal indicado.
AtaPortRequestPowerStateChange Solicita una transición de estado de energía para el dispositivo indicado.

Rutinas para controlar las colas de solicitudes

El controlador de puerto mantiene una cola de solicitudes por número de unidad lógica (LUN) y una cola de solicitudes para cada canal. El controlador de minipuerto puede usar las siguientes rutinas para pausar y reanudar las diferentes colas de solicitudes.

Rutina Descripción
AtaPortDeviceBusy Informa al controlador de puerto de que el dispositivo indicado está ocupado.
AtaPortDeviceReady Informa al controlador de puerto de que el dispositivo indicado está listo para aceptar nuevas solicitudes.

Rutinas de utilidad

Las siguientes rutinas son funciones de compatibilidad de utilidad general para controladores de miniporte.

Rutina Descripción
AtaPortCopyMemory Copia datos de una ubicación a otra.
**Rutina AtaPortMoveMemory Copia datos de una ubicación a otra.
AtaPortConvertUlongToPhysicalAddress Convierte una dirección ULONG determinada en un valor de tipo IDE_PHYSICAL_ADDRESS.
AtaPortConvertPhysicalAddressToUlong Trunca una dirección de tipo IDE_PHYSICAL_ADDRESS en una ULONG.
AtaPortStallExecution Se detiene en el miniportador.
AtaPortInitializeQueueTag Inicializa la lista de etiquetas de cola para el dispositivo especificado.
AtaPortAllocateQueueTag Devuelve una etiqueta de cola para el dispositivo especificado.
AtaPortReleaseQueueTag Libera la etiqueta de cola especificada.

Rutinas de informes de errores y depuración

La rutina siguiente se puede usar para la depuración y los informes de errores.

Rutina Descripción
AtaPortDebugPrint Pasa una cadena de mensaje al depurador de kernel para que el depurador se imprima.

Rutinas para el puerto de dispositivo y registrar el acceso

El controlador de puerto de ATA proporciona los siguientes puertos y registra las rutinas de compatibilidad de acceso.

Rutina Descripción
AtaPortReadPortBufferUchar Transfiere un número determinado de valores de bytes sin signo del HBA a un búfer.
AtaPortReadPortBufferUlong Transfiere un número determinado de valores de ULONG del HBA a un búfer.
AtaPortReadPortBufferUshort Transfiere un número determinado de valores de USHORT del HBA a un búfer.
AtaPortReadPortUchar Lee un valor de byte sin signo del HBA.
AtaPortReadPortUlong Lee un valor de ULONG del HBA.
AtaPortReadPortUshort Lee un valor de USHORT del HBA.
AtaPortReadRegisterBufferUchar Transfiere un número especificado de bytes sin signo del HBA a un búfer.
AtaPortReadRegisterBufferUlong Transfiere un número especificado de ULONG desde el HBA a un búfer.
AtaPortReadRegisterBufferUshort Transfiere un número especificado de USHORT del HBA a un búfer.
AtaPortReadRegisterUchar Lee un valor de byte sin signo del HBA.
AtaPortReadRegisterUlong Lee un valor de ULONG del HBA.
AtaPortReadRegisterUshort Lee un valor de USHORT del HBA.
AtaPortWritePortBufferUchar Escribe un valor en una dirección de registro especificada.
AtaPortWritePortBufferUlong Escribe un valor en una dirección de registro especificada.
AtaPortWritePortBufferUshort Escribe un valor en una dirección de registro especificada.
AtaPortWritePortUchar Transfiere un valor de byte sin signo al HBA.
AtaPortWritePortUlong Transfiere un valor ULONG al HBA.
AtaPortWritePortUshort Transfiere un valor de USHORT al HBA.
AtaPortWriteRegisterBufferUchar Transfiere el número especificado de bytes sin signo de un búfer al HBA.
AtaPortWriteRegisterBufferUlong Transfiere el número especificado de valores de ULONG de un búfer al HBA.
AtaPortWriteRegisterBufferUshort Transfiere el número especificado de valores de USHORT de un búfer al HBA.
AtaPortWriteRegisterUchar Transfiere un byte sin signo a la dirección HBA.
AtaPortWriteRegisterUlong Transfiere un valor ULONG a la dirección HBA.
AtaPortWriteRegisterUshort Transfiere un valor de USHORT a la dirección HBA.

Rutinas para el acceso al Registro

Un controlador de minipuerto que implementa la interfaz de canal puede llamar a las siguientes rutinas para acceder al Registro de Windows. Los controladores de miniporte que solo implementan las rutinas de interfaz del controlador no pueden acceder a estas rutinas.

Rutina Descripción
AtaPortRegistryAllocateBuffer Asigna un búfer para las operaciones del Registro.
AtaPortRegistryFreeBuffer Libera el búfer del Registro que se asignó mediante AtaPortRegistryAllocateBuffer.
AtaPortRegistryControllerKeyRead Lee los datos asociados al nombre de valor indicado en la clave del Registro HKLM\CurrentControlSet\Services\<service name>\ControllerN, donde N es el número del controlador.
AtaPortRegistryContrlollerKeyWrite Escribe los datos en el nombre de valor indicado en la clave del Registro HKLM\CurrentControlSet\Services\<service name>\ControllerN, donde N es el número del controlador.
AtaPortRegistryControllerKeyWriteDeferred Escribe los datos de forma asincrónica en el nombre de valor indicado en la clave del Registro HKLM\CurrentControlSet\Services\<service name>\ControllerN, donde N es el número del controlador.
AtaPortRegistryChannelSubKeyRead Lee los datos asociados al nombre de valor indicado en la clave del Registro HKLM\CurrentControlSet\Services\<service name>\ControllerN\ChannelM, donde N es el número del controlador y M es el número del canal.
AtaPortRegistryChannelSubKeyWrite Escribe los datos en el nombre de valor indicado en la clave del Registro HKLM\CurrentControlSet\Services\<service name>\ControllerN\ChannelM, donde N es el número del controlador y M es el número del canal.
AtaPortRegistryChannelSubKeyWriteDeferred Escribe los datos de forma asincrónica en el nombre de valor indicado en la clave del Registro HKLM\CurrentControlSet\Services\<service name>\ControllerN\ChannelM, donde N es el número del controlador y M es el número del canal.