共用方式為


單一二進位加入宣告:POOL_NX_OPTIN

若要建置在 Windows 8 和舊版 Windows 中執行的單一驅動程式二進位檔,請使用POOL_NX_OPTIN加入宣告機制。 這是協力廠商硬體廠商的移植協助工具,可提供單一驅動程式二進位檔來支援多個 Windows 版本。

若要使用此加入宣告機制,請執行下列動作:

  • 針對您想要加入的所有原始程式檔定義POOL_NX_OPTIN = 1。 若要這樣做,請在驅動程式專案的適當屬性頁中包含下列預處理器定義:

    C_DEFINES=$(C_DEFINES) -DPOOL_NX_OPTIN=1

  • DriverEntry (或對等) 常式中,包含下列函式呼叫:

    ExInitializeDriverRuntime(DrvRtPoolNxOptIn);

    在驅動程式進行任何使用 NonPagedPool 集區類型的配置,或對 ExInitializeNPagedLoitisideList 常式進行任何呼叫之前,必須先進行此呼叫。 ExInitializeDriverRuntime是強制內嵌函式,可在 windows Windows 8 或更新版本上呼叫。

對於大部分的驅動程式,這兩項工作就足以啟用單一驅動程式二進位檔的加入宣告機制。

實作詳細資料

POOL_NX_OPTIN的運作方式是將NonPagedPool取代為全域POOL_TYPE變數, ExDefaultNonPagedPoolType 其初始化為適用于舊版) Windows) Windows 8及更新版本的NonPagedPoolNx ( (。 此加入宣告機制可讓您的核心模式驅動程式在Windows 8上執行,並增強 NX 集區的保護,以及在不支援 NX 集區的舊版 Windows 上執行。 將 NonPagedPool 常數名稱實例轉換為NonPagedPoolNx的宏也會將NonPagedPoolCacheAligned的實例轉換為NonPagedPoolNxCacheAligned

支援靜態程式庫 (.lib 專案)

您可以使用 .lib 專案的POOL_NX_OPTIN加入宣告機制,但連結至 .lib 的專案通常也必須使用 POOL_NX_OPTIN。 至少,實作 DriverEntry 常式的專案必須包含下列函式呼叫:

ExInitializeDriverRuntime(DrvRtPoolNxOptIn);