共用方式為


DRIVER_INITIALIZE回呼函式 (wdm.h)

DRIVER_INITIALIZE 是驅動程式初始化進入點的類型定義,通常命名為 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,指向指定登錄 \Registry\Machine\Hardware 樹狀目錄路徑的已計算 Unicode 字符串。

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

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

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

例子

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

若要定義 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