Freigeben über


Unterstützungsroutinen für ATA-Porttreiber

Auf dieser Seite werden die Supportroutinen kategorisiert, die vom systemseitig bereitgestellten ATA-Porttreiber bereitgestellt werden.

Eine Liste der MINIPORT-Routinen des ATA-Treibers finden Sie unter ATA Miniport-Treiber.

Initialisierungsroutine

Der ATA-Porttreiber stellt die folgende Initialisierungsroutine bereit.

-Routine zurückgegebener Wert BESCHREIBUNG
AtaPortInitializeEx Initialisiert die Port- und Miniporttreiber.

Routinen für den PCI-Konfigurationsspeicherzugriff

Der ATA-Porttreiber bietet die folgenden Routinen, mit denen Sie den Inhalt des PCI-Konfigurationsraums des Geräts lesen und ändern können.

-Routine zurückgegebener Wert BESCHREIBUNG
AtaPortGetBusData Ruft Daten vom angegebenen Speicherort im PCI-Konfigurationsbereich des Geräts ab.
AtaPortSetBusData speichert die Daten im PCI-Konfigurationsraum des angegebenen Geräts am angegebenen Offset.

Routinen für die Verarbeitung von E/A-Anforderungen

Der ATA-Porttreiber bietet die folgenden E/A-Anforderungsverarbeitungsroutinen.

-Routine zurückgegebener Wert BESCHREIBUNG
AtaPortGetScatterGatherList Ruft die dieser Anforderung zugeordnete Punkt-/Sammlungsliste ab.
AtaPortGetPhysicalAddress Konvertiert den virtuellen Adressbereich in den physischen Adressbereich.
AtaPortGetDeviceBase Gibt eine zugeordnete logische Basisadresse zurück, die für die Kommunikation mit einem Host Bus Adapter (HBA) verwendet wird.
AtaPortGetUncachedExtension Ordnet einen nicht zwischengespeicherten gemeinsamen Puffer zu, der von der CPU und dem Gerät gemeinsam genutzt wird.
AtaPortBuildRequestSenseIrb Erstellt und gibt einen IRB für Vorgangscode SCSIOP_REQUEST_SENSE zurück.
AtaPortReleaseRequestSenseIrb Gibt den Anforderungssinn-IRB frei, der mithilfe von AtaPortBuildRequestSenseIrb zugewiesen wird.
AtaPortCompleteAllActiveRequests Schließt alle aktiven IRBs für das angegebene Gerät ab.
AtaPortCompleteRequest Schließt den angegebenen IRB ab.

Rückrufroutinen

Der Miniporttreiber verwendet mehrere Routinen, um einen Rückruf vom Porttreiber anzufordern.

-Routine zurückgegebener Wert BESCHREIBUNG
AtaPortRequestWorkerRoutine Fordert eine Workerroutine an.
AtaPortRequestSynchronizedRoutine Fordert die Synchronisierung mit der Interruptdienstroutine (ISR) an.
AtaPortControllerSyncRoutine Ermöglicht synchronisierten Zugriff auf Datenstrukturen, die über alle Kanäle auf einem Controller freigegeben werden.
AtaPortRequestTimer Fordert einen Timerrückruf an.

Routinen, die eine Konfigurationsänderung melden

Die folgenden Routinen ermöglichen es dem Miniporttreiber, den ATA-Porttreiber über Änderungen an der Konfiguration der Geräte zu benachrichtigen, die an den Kanal angefügt sind.

-Routine zurückgegebener Wert BESCHREIBUNG
AtaPortBusChangeDetected Benachrichtigt den Porttreiber über Änderungen an der Gerätekonfiguration auf dem angegebenen Kanal.
AtaPortRequestPowerStateChange Fordert einen Energiezustandsübergang für das angegebene Gerät an.

Routinen zum Steuern von Anforderungswarteschlangen

Der Porttreiber verwaltet eine Anforderungswarteschlange pro LUN (Logical Unit Number) und eine Anforderungswarteschlange für jeden Kanal. Der Miniporttreiber kann die folgenden Routinen verwenden, um die verschiedenen Anforderungswarteschlangen anzuhalten und fortzusetzen.

-Routine zurückgegebener Wert BESCHREIBUNG
AtaPortDeviceBusy Informiert den Porttreiber darüber, dass das angegebene Gerät ausgelastet ist.
AtaPortDeviceReady Informiert den Porttreiber darüber, dass das angegebene Gerät bereit ist, neue Anforderungen zu akzeptieren.

Hilfsprogrammroutinen

Die folgenden Routinen sind allgemeine Hilfsprogrammunterstützungsfunktionen für Miniporttreiber.

-Routine zurückgegebener Wert BESCHREIBUNG
AtaPortCopyMemory Kopiert Daten von einem Speicherort an einen anderen.
**AtaPortMoveMemory-Routine Kopiert Daten von einem Speicherort an einen anderen.
AtaPortConvertUlongToPhysicalAddress Konvertiert eine angegebene ULONG-Adresse in einen Wert vom Typ IDE_PHYSICAL_ADDRESS.
AtaPortConvertPhysicalAddressToUlong Schneidet eine Adresse vom Typ IDE_PHYSICAL_ADDRESS zu einer ULONG ab.
AtaPortStallExecution Stände im Miniport-Fahrer.
AtaPortInitializeQueueTag Initialisiert die Liste der Warteschlangentags für das angegebene Gerät.
AtaPortAllocateQueueTag Gibt ein Warteschlangentag für das angegebene Gerät zurück.
AtaPortReleaseQueueTag Gibt das angegebene Warteschlangentag frei.

Debug- und Fehlerberichtsroutinen

Die folgende Routine kann für Debug- und Fehlerberichterstattung verwendet werden.

-Routine zurückgegebener Wert BESCHREIBUNG
AtaPortDebugPrint Übergibt eine Nachrichtenzeichenfolge an den Kerneldebugger, damit der Debugger gedruckt werden soll.

Routinen für Geräteport und Zugriff registrieren

Der ATA-Porttreiber stellt die folgenden Port- und Registrierungsunterstützungsroutinen bereit.

-Routine zurückgegebener Wert BESCHREIBUNG
AtaPortReadPortBufferUchar Überträgt eine bestimmte Anzahl von Bytewerten ohne Vorzeichen aus dem HBA in einen Puffer.
AtaPortReadPortBufferUlong Überträgt eine bestimmte Anzahl von ULONG-Werten aus dem HBA in einen Puffer.
AtaPortReadPortBufferUshort Überträgt eine bestimmte Anzahl von USHORT-Werten aus dem HBA in einen Puffer.
AtaPortReadPortUchar Liest einen Bytewert ohne Vorzeichen aus dem HBA.
AtaPortReadPortUlong Liest einen ULONG-Wert aus dem HBA.
AtaPortReadPortUshort Liest einen USHORT-Wert aus dem HBA.
AtaPortReadRegisterBufferUchar Überträgt eine angegebene Anzahl von Bytes ohne Vorzeichen vom HBA in einen Puffer.
AtaPortReadRegisterBufferUlong Überträgt eine angegebene Anzahl von ULONG aus dem HBA in einen Puffer.
AtaPortReadRegisterBufferUshort Überträgt eine angegebene Anzahl von USHORT aus dem HBA in einen Puffer.
AtaPortReadRegisterUchar Liest einen Bytewert ohne Vorzeichen aus dem HBA.
AtaPortReadRegisterUlong Liest einen ULONG-Wert aus dem HBA.
AtaPortReadRegisterUshort Liest einen USHORT-Wert aus dem HBA.
AtaPortWritePortBufferUchar Schreibt einen Wert in eine angegebene Registeradresse.
AtaPortWritePortBufferUlong Schreibt einen Wert in eine angegebene Registeradresse.
AtaPortWritePortBufferUshort Schreibt einen Wert in eine angegebene Registeradresse.
AtaPortWritePortUchar Überträgt einen Bytewert ohne Vorzeichen an den HBA.
AtaPortWritePortUlong Überträgt einen ULONG-Wert an den HBA.
AtaPortWritePortUshort Überträgt einen USHORT-Wert an den HBA.
AtaPortWriteRegisterBufferUchar Überträgt die angegebene Anzahl von Bytes ohne Vorzeichen aus einem Puffer an den HBA.
AtaPortWriteRegisterBufferUlong Überträgt die angegebene Anzahl von ULONG-Werten aus einem Puffer an den HBA.
AtaPortWriteRegisterBufferUshort Überträgt die angegebene Anzahl von USHORT-Werten aus einem Puffer in den HBA.
AtaPortWriteRegisterUchar Überträgt ein nicht signiertes Byte an die HBA-Adresse.
AtaPortWriteRegisterUlong Überträgt einen ULONG-Wert an die HBA-Adresse.
AtaPortWriteRegisterUshort Überträgt einen USHORT-Wert an die HBA-Adresse.

Routinen für den Registrierungszugriff

Ein Miniporttreiber, der die Kanalschnittstelle implementiert, kann die folgenden Routinen aufrufen, um auf die Windows-Registrierung zuzugreifen. Miniporttreiber, die nur die Controllerschnittstellenroutinen implementieren, können nicht auf diese Routinen zugreifen.

-Routine zurückgegebener Wert BESCHREIBUNG
AtaPortRegistryAllocateBuffer Ordnet einen Puffer für Registrierungsvorgänge zu.
AtaPortRegistryFreeBuffer Gibt den Registrierungspuffer frei, der mithilfe von AtaPortRegistryAllocateBuffer zugeordnet wurde.
AtaPortRegistryControllerKeyRead Liest die Daten, die dem angegebenen Wertnamen unter dem Registrierungsschlüssel HKLM\CurrentControlSet\Services\<service name>\ControllerN zugeordnet sind, wobei N die Nummer des Controllers ist.
AtaPortRegistryContrlollerKeyWrite Schreibt die Daten in den angegebenen Wertnamen unter dem Registrierungsschlüssel HKLM\CurrentControlSet\Services\<service name>\ControllerN, wobei N die Nummer des Controllers ist.
AtaPortRegistryControllerKeyWriteDeferred Schreibt die Daten asynchron in den angegebenen Wertnamen unter dem Registrierungsschlüssel HKLM\CurrentControlSet\Services\<service name>\ControllerN, wobei N die Nummer des Controllers ist.
AtaPortRegistryChannelSubKeyRead Liest die Daten, die dem angegebenen Wertnamen unter dem Registrierungsschlüssel HKLM\CurrentControlSet\Services\<service name>\ControllerN\ChannelM zugeordnet sind, wobei N die Nummer des Controllers und M die Nummer des Kanals ist.
AtaPortRegistryChannelSubKeyWrite Schreibt die Daten in den angegebenen Wertnamen unter dem Registrierungsschlüssel HKLM\CurrentControlSet\Services\<service name>\ControllerN\ChannelM, wobei N die Nummer des Controllers und M die Nummer des Kanals ist.
AtaPortRegistryChannelSubKeyWriteDeferred Schreibt die Daten asynchron in den angegebenen Wertnamen unter dem Registrierungsschlüssel HKLM\CurrentControlSet\Services\<service name>\ControllerN\ChannelM, wobei N die Nummer des Controllers und M die Nummer des Kanals ist.