Freigeben über


IoCsqInitializeEx-Funktion (wdm.h)

Die IoCsqInitializeEx Routine initialisiert die Verteilertabelle 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 IoCsqInitializeExinitialisiert werden soll.

[in] CsqInsertIrp

Zeiger auf die treiberdefinierte CsqInsertIrpEx--Funktion für die abbruchsichere IRP-Warteschlange des Treibers.

[in] CsqRemoveIrp

Zeiger auf die treiberdefinierte CsqRemoveIrp--Funktion für die abbruchsichere IRP-Warteschlange des Treibers.

[in] CsqPeekNextIrp

Zeiger auf die treiberdefinierte CsqPeekNextIrp-Funktion für die abbruchsichere IRP-Warteschlange des Treibers.

[in] CsqAcquireLock

Zeiger auf die treiberdefinierte CsqAcquireLock--Funktion für die abbruchsichere IRP-Warteschlange des Treibers.

[in] CsqReleaseLock

Zeiger auf die treiberdefinierte 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 beim Fehler zurück.

Bemerkungen

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 IoCsqInitializeangegeben anzugeben:

  • Der Treiber implementiert eine CsqInsertIrpEx- Routine anstelle einer CsqInsertIrp- Routine. CsqInsertIrpEx einen zusätzlichen Parameter verwendet, 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 CsqInsertIrpExzurück. Treiber können den Rückgabewert verwenden, um anzugeben, ob ein Einfügevorgang erfolgreich war oder fehlgeschlagen ist.
Andernfalls ist die Auswirkung von IoCsqInitializeEx- identisch mit dem von IoCsqInitialize. Weitere Informationen finden Sie unter Cancel-Safe IRP Queues.

Beachten Sie, dass IoCsq-Xxx- Routinen die DriverContext-[3] des IRP-Elements verwenden, um IRP-Kontextinformationen zu enthalten. Treiber, die diese Routinen verwenden, um IRPs in die Warteschlange zu stellen, müssen dieses Mitglied nicht verwenden.

Anforderungen

Anforderung Wert
mindestens unterstützte 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- Universal
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- Beliebige Ebene

Siehe auch

CsqAcquireLock-

CsqCompleteCanceledIrp-

CsqInsertIrp-

CsqInsertIrpEx

CsqPeekNextIrp

CsqReleaseLock-

CsqRemoveIrp

IO_CSQ

IO_CSQ_IRP_CONTEXT

IoCsqInitializeEx

IoCsqInsertIrp-

IoCsqInsertIrpEx-

IoCsqRemoveIrp

IoCsqRemoveNextIrp