IO_CSQ_PEEK_NEXT_IRP回呼函式 (wdm.h)
CsqPeekNextIrp 例程是由系統用來在驅動程序實作、取消安全 IRP 佇列中尋找下一個相符的 IRP。
語法
IO_CSQ_PEEK_NEXT_IRP IoCsqPeekNextIrp;
PIRP IoCsqPeekNextIrp(
[in] PIO_CSQ Csq,
[in, optional] PIRP Irp,
[in, optional] PVOID PeekContext
)
{...}
參數
[in] Csq
取消安全 IRP 佇列 IO_CSQ 結構的指標。
[in, optional] Irp
驅動程式 IRP 佇列中的 IRP 指標,或 NULL 以指定佇列的開頭。
[in, optional] PeekContext
驅動程式定義內容資訊的指標。 CsqPeekNextIrp 例程會傳回 Irp 後面的第一個 IRP,並符合 PeekContext。
傳回值
CsqPeekNextIrp 會 傳回佇列中 Irp 後面的第一個 IRP,並符合 PeekContext,如果沒有相符的 IRP,則傳回 NULL 。 如果 Irp 為 NULL,CsqPeekNextIrp 會傳回佇列中第一個相符的 IRP,如果沒有相符的 IRP,則為 NULL。
備註
驅動程式會在初始化佇列的IO_CSQ結構時,指定取消安全 IRP 佇列的 CsqPeekNextIrp 例程。 驅動程式會在初始化IO_CSQ時,將例程指定為IoCsqInitialize或IoCsqInitializeEx的 CsqPeekNextIrp 參數。 如需詳細資訊,請參閱 取消安全 IRP 佇列。
系統會使用 CsqPeekNextIrp 逐一查看驅動程式 IRP 佇列中的 IRP。 例如, IoCsqRemoveNextIrp 例程會使用此例程來尋找要移除的 IRP。
範例
若要定義 CsqPeekNextIrp 回呼例程,您必須先提供函式宣告來識別您要定義的回呼例程類型。 Windows 提供一組驅動程式的回呼函式類型。 使用回呼函式類型宣告函式有助於 驅動程式的程式代碼分析、 靜態驅動程式驗證器 (SDV) ,以及其他驗證工具會尋找錯誤,而且這是撰寫 Windows 操作系統驅動程式的需求。
例如,若要定義名為 MyCsqPeekNextIrp
的 CsqPeekNextIrp 回呼例程,請使用 IO_CSQ_PEEK_NEXT_IRP 類型,如下列程式代碼範例所示:
IO_CSQ_PEEK_NEXT_IRP MyCsqPeekNextIrp;
然後,實作回呼例程,如下所示:
_Use_decl_annotations_
PIRP
MyCsqPeekNextIrp(
PIO_CSQ Csq,
PIRP Irp,
PVOID PeekContext
)
{
// Function body
}
IO_CSQ_PEEK_NEXT_IRP函式類型定義於 Wdm.h 頭檔中。 若要在執行程式代碼分析工具時更精確地識別錯誤,請務必將 _Use_decl_annotations_
註釋新增至函式定義。 批 _Use_decl_annotations_
注可確保使用頭檔中套用至IO_CSQ_PEEK_NEXT_IRP函式類型的批註。 如需函式宣告需求的詳細資訊,請參閱 使用WDM驅動程式的函式角色類型來宣告函式。 如需 的相關信息 _Use_decl_annotations_
,請參閱 標註函式行為。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |