共用方式為


IO_CSQ_INSERT_IRP_EX回呼函式 (wdm.h)

系統會使用 CsqInsertIrpEx 例程,將 IRP 插入驅動程式實作的取消安全 IRP 佇列。

語法

IO_CSQ_INSERT_IRP_EX IoCsqInsertIrpEx;

NTSTATUS IoCsqInsertIrpEx(
  [in] _IO_CSQ *Csq,
  [in] PIRP Irp,
  [in] PVOID InsertContext
)
{...}

參數

[in] Csq

取消安全 IRP 佇列 IO_CSQ 結構的指標。

[in] Irp

要插入 IRP 佇列中的 IRP 指標。

[in] InsertContext

插入作業之驅動程式定義內容的指標。

傳回值

如果已成功插入 IRP,或失敗時的適當錯誤碼,CsqInsertIrpEx 會傳回STATUS_SUCCESS。

備註

驅動程式會在初始化佇列的IO_CSQ結構時,指定取消安全 IRP 佇列的 CsqInsertIrpEx 例程。 驅動程式會在初始化 IO_CSQ 時,將例程指定為IoCsqInitializeExCsqInsertIrp 參數。 如需詳細資訊,請參閱 取消安全的 IRP 佇列

IoCsqInsertIrpEx 例程會呼叫 CsqInsertIrpEx,將 IRP 插入佇列中。 IoCsqInsertIrpExInsertContext 參數會當做 CsqInsertIrpExInsertContext 參數傳遞。

範例

若要定義 CsqInsertIrpEx 回呼例程,您必須先提供函式宣告來識別您要定義的回呼例程類型。 Windows 提供一組驅動程式的回呼函式類型。 使用回呼函式類型宣告函式有助於 驅動程式的程式代碼分析靜態驅動程式驗證器 (SDV) ,以及其他驗證工具尋找錯誤,而且這是撰寫 Windows 操作系統驅動程式的需求。

例如,若要定義名為 MyCsqInsertIrpExCsqInsertIrpEx 回呼例程,請使用 IO_CSQ_INSERT_IRP_EX 類型,如下列程式代碼範例所示:

IO_CSQ_INSERT_IRP_EX MyCsqInsertIrpEx;

然後,實作回呼例程,如下所示:

_Use_decl_annotations_
NTSTATUS
 MyCsqInsertIrpEx(
    struct _IO_CSQ  *Csq,
    PIRP  Irp,
    PVOID  InsertContext
    )
  {
      // Function body
  }

IO_CSQ_INSERT_IRP_EX函式類型定義於 Wdm.h 頭檔中。 若要在執行程式代碼分析工具時更精確地識別錯誤,請務必將 _Use_decl_annotations_ 批註新增至函式定義。 註釋 _Use_decl_annotations_ 可確保使用頭檔中套用至IO_CSQ_INSERT_IRP_EX函式類型的批註。 如需函數宣告需求的詳細資訊,請參閱 使用WDM驅動程式的函式角色類型來宣告函式。 如需 的相關信息 _Use_decl_annotations_,請參閱 標註函式行為

規格需求

需求
目標平台 桌面
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)

另請參閱

CsqAcquireLock

CsqCompleteCanceledIrp

CsqInsertIrp

CsqPeekNextIrp

CsqReleaseLock

CsqRemoveIrp

IO_CSQ

IoCsqInitialize

IoCsqInitializeEx

IoCsqInsertIrp

IoCsqInsertIrpEx

IoCsqRemoveIrp

IoCsqRemoveNextIrp