共用方式為


DRIVER_STARTIO回呼函式 (wdm.h)

StartIo 例程會啟動 IRP 所描述的 I/O 作業。

語法

DRIVER_STARTIO DriverStartio;

void DriverStartio(
  [in, out] _DEVICE_OBJECT *DeviceObject,
  [in, out] _IRP *Irp
)
{...}

參數

[in, out] DeviceObject

呼叫端提供的 DEVICE_OBJECT 結構的指標。 這是目標裝置的裝置物件,先前是由驅動程式的 AddDevice 例程所建立。

[in, out] Irp

呼叫端提供的 IRP 結構指標,描述要求的 I/O 作業。

傳回值

沒有

言論

驅動程式的 StartIo 例程會在 IRQL = DISPATCH_LEVEL 的任意線程內容中執行。

StartIo 例程是選擇性的。 如果提供,驅動程式的 StartIo 例程應該命名為 XxxStartIo,其中 Xxx 是驅動程式特定的前置詞。 驅動程式的 DriverEntry 例程必須在 DriverObject->DriverStartIo 中儲存 StartIo 例程的位址。 (如果未提供任何例程,則必須 NULL

驅動程式可以使用 IoSetStartIoAttributes,在呼叫其 StartIo 例程時設定 屬性。

如需實作驅動程式 StartIo 例程的詳細資訊,請參閱 撰寫 StartIo 例程

例子

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

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

DRIVER_STARTIO MyStartIo;

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

_Use_decl_annotations_
VOID
  MyStartIo(
    struct _DEVICE_OBJECT  *DeviceObject,
    struct _IRP  *Irp 
    )
  {
      // Function body
  }

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

要求

要求 價值
目標平臺 桌面
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
IRQL 在 DISPATCH_LEVEL呼叫。