共用方式為


DRIVER_INITIALIZE回呼函式 (wdm.h)

DriverEntry 是在載入驅動程式之後呼叫的第一個例程,負責初始化驅動程式。

語法

DRIVER_INITIALIZE DriverInitialize;

NTSTATUS DriverInitialize(
  [in] _DRIVER_OBJECT *DriverObject,
  [in] PUNICODE_STRING RegistryPath
)
{...}

參數

[in] DriverObject

DRIVER_OBJECT 結構的指標。 這是驅動程式的驅動程序物件。

[in] RegistryPath

計算 Unicode 字串的指標,指定驅動程式登錄機碼的路徑。

傳回值

如果例程成功,它必須傳回STATUS_SUCCESS。 否則,它必須傳回 Ntstatus.h 中定義的其中一個錯誤狀態值。

備註

DriverObject 參數會提供 DriverEntry 例程,其中包含驅動程式驅動程式物件的指標,由 I/O 管理員所配置。 DriverEntry 例程必須以驅動程式標準例程的進入點填入驅動程序物件。

DriverObject 指標可讓驅動程式存取 DriverObject-HardwareDatabase>,指向計數的 Unicode 字串,指定登錄 \Registry\Machine\Hardware 樹狀結構的路徑。

RegistryPath 指向的登錄路徑字串格式為 \Registry\Machine\System\CurrentControlSet\Services\DriverName。 驅動程式可以使用此路徑來儲存驅動程式特定資訊;請參閱 驅動程式的登錄機碼DriverEntry 例程應該儲存 Unicode 字串的複本,而不是指標,因為 I/O 管理員會在 DriverEntry 傳回之後釋放 RegistryPath 緩衝區。

如需實作 DriverEntry 例程的詳細資訊,請參閱 撰寫 DriverEntry 例程

雖然可以將此例程命名為 DriverEntry 以外的例程,但不建議這麼做。 DDK 提供的建置工具會自動通知連結器驅動程式進入點稱為 DriverEntry,因此提供例程另一個名稱會要求您修改建置工具。 如需建置工具的詳細資訊,請參閱 建置驅動程式

範例

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

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

DRIVER_INITIALIZE DriverEntry;

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

_Use_decl_annotations_
NTSTATUS 
  DriverEntry( 
    struct _DRIVER_OBJECT  *DriverObject,
    PUNICODE_STRING  RegistryPath 
    )
  {
      // Function body
  }

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

規格需求

需求
目標平台 桌面
標頭 wdm.h (包括 Mcd.h、Ntddk.h、Ntifs.h、Wudfwdm.h)
IRQL 在 PASSIVE_LEVEL呼叫。

另請參閱

DRIVER_OBJECT