Freigeben über


IoCsqInitializeEx-Funktion (wdm.h)

Die IoCsqInitializeEx-Routine initialisiert die Dispatchtabelle für eine abbruchsichere IRP-Warteschlange.

Syntax

NTSTATUS IoCsqInitializeEx(
  [out] PIO_CSQ                       Csq,
  [in]  PIO_CSQ_INSERT_IRP_EX         CsqInsertIrp,
  [in]  PIO_CSQ_REMOVE_IRP            CsqRemoveIrp,
  [in]  PIO_CSQ_PEEK_NEXT_IRP         CsqPeekNextIrp,
  [in]  PIO_CSQ_ACQUIRE_LOCK          CsqAcquireLock,
  [in]  PIO_CSQ_RELEASE_LOCK          CsqReleaseLock,
  [in]  PIO_CSQ_COMPLETE_CANCELED_IRP CsqCompleteCanceledIrp
);

Parameter

[out] Csq

Zeiger auf die IO_CSQ Struktur, die von IoCsqInitializeEx initialisiert werden soll.

[in] CsqInsertIrp

Zeiger auf die vom Treiber definierte CsqInsertIrpEx-Funktion für die abbruchsichere IRP-Warteschlange des Treibers.

[in] CsqRemoveIrp

Zeiger auf die vom Treiber definierte CsqRemoveIrp-Funktion für die abbruchsichere IRP-Warteschlange des Treibers.

[in] CsqPeekNextIrp

Zeiger auf die vom Treiber definierte CsqPeekNextIrp-Funktion für die abbruchsichere IRP-Warteschlange des Treibers.

[in] CsqAcquireLock

Zeiger auf die vom Treiber definierte CsqAcquireLock-Funktion für die abbruchsichere IRP-Warteschlange des Treibers.

[in] CsqReleaseLock

Zeiger auf die vom Treiber definierte CsqReleaseLock-Funktion für die abbruchsichere IRP-Warteschlange des Treibers.

[in] CsqCompleteCanceledIrp

Zeiger auf die vom Treiber definierte CsqCompleteCanceledIrp-Funktion für die abbruchsichere IRP-Warteschlange des Treibers.

Rückgabewert

IoCsqInitializeEx gibt STATUS_SUCCESS bei Erfolg oder den entsprechenden Fehlercode bei Einem Fehler zurück.

Hinweise

Die IoCsqInitialize - und IoCsqInitializeEx-Routinen initialisieren eine IO_CSQ-Struktur , die die abbruchsichere IRP-Warteschlange eines Treibers beschreibt. Sie können IoCsqInitializeEx verwenden, um eine IRP-Warteschlange mit erweiterten Funktionen anstelle einer von IoCsqInitialize angegebenen anzugeben:

  • Der Treiber implementiert eine CsqInsertIrpEx-Routine anstelle einer CsqInsertIrp-Routine . CsqInsertIrpEx verwendet den zusätzlichen Parameter InsertContext. Wenn der Treiber IoCsqInsertIrpEx aufruft, um das IRP einzufügen, gibt er den Wert an, der als InsertContext übergeben wird.
  • IoCsqInsertIrpEx gibt den Rückgabewert von CsqInsertIrpEx zurück. Treiber können den Rückgabewert verwenden, um anzugeben, ob ein Einfügevorgang erfolgreich war oder fehlgeschlagen ist.
Andernfalls ist die Wirkung von IoCsqInitializeEx identisch mit der von IoCsqInitialize. Weitere Informationen finden Sie unter Cancel-Safe IRP-Warteschlangen.

Beachten Sie, dass IoCsqXxx-Routinen das Member DriverContext[3] des IRP verwenden, um IRP-Kontextinformationen zu enthalten. Treiber, die diese Routinen verwenden, um IRPs in die Warteschlange zu stellen, müssen diesen Member nicht verwendet lassen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows Server 2003 und höheren Versionen des Windows-Betriebssystems. Die Routine ist auch in der Csq.lib-Bibliothek verfügbar, die im Lieferumfang des Windows Driver Kit (WDK) und des Driver Development Kit (DDK) für Windows Server 2003 enthalten ist. Treiber, die auch unter Windows XP, Windows 2000 und Windows 98/Me funktionieren müssen, können stattdessen mit Csq.lib verknüpft werden, um die Routine zu verwenden.
Zielplattform Universell
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Beliebige Ebene

Weitere Informationen

CsqAcquireLock

CsqCompleteCanceledIrp

CsqInsertIrp

CsqInsertIrpEx

CsqPeekNextIrp

CsqReleaseLock

CsqRemoveIrp

IO_CSQ

IO_CSQ_IRP_CONTEXT

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp

IoCsqRemoveNextIrp