Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Pour générer un fichier binaire de pilote unique qui s’exécute à la fois dans Windows 8 et dans les versions antérieures de Windows, utilisez le mécanisme d’adhésion POOL_NX_OPTIN. Il s’agit d’une aide de portage pour les fournisseurs de matériel tiers qui fournissent un fichier binaire de pilote unique pour prendre en charge plusieurs versions de Windows.
Pour utiliser ce mécanisme d’opt-in, procédez comme suit :
Définissez POOL_NX_OPTIN = 1 pour tous les fichiers sources que vous souhaitez accepter. Pour ce faire, incluez la définition de préprocesseur suivante dans la page de propriétés appropriée pour votre projet de pilote :
C_DEFINES=$(C_DEFINES) -DPOOL_NX_OPTIN=1Dans votre routine DriverEntry (ou équivalente), incluez l’appel de fonction suivant :
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);Cet appel doit se produire avant que le pilote effectue des allocations qui utilisent le type de pool nonPagedPool ou effectue des appels à la routine ExInitializeNPagedLookasideList. ExInitializeDriverRuntime est une fonction inline de force et peut être appelée sur Windows 8 ou versions ultérieures de Windows.
Pour la plupart des pilotes, ces deux tâches sont suffisantes pour activer le mécanisme d’adhésion pour le binaire du pilote unique.
Informations d’implémentation
POOL_NX_OPTIN fonctionne en remplaçant nonPagedPool par une variable de POOL_TYPE globale, ExDefaultNonPagedPoolType, qui est initialisée à NonPagedPoolNx (pour Windows 8 et versions ultérieures de Windows) ou à NonPagedPoolExecute (pour les versions antérieures de Windows). Ce mécanisme d’opt-in permet à votre pilote en mode noyau d’exécuter les deux sur Windows 8, avec la protection améliorée du pool NX et sur les versions antérieures de Windows, qui ne prennent pas en charge le pool NX. La macro qui convertit les instances du nom de constante NonPagedPool en NonPagedPoolNx convertit également les instances de NonPagedPoolCacheAligned en NonPagedPoolNxCacheAligned.
Prise en charge des bibliothèques statiques (projets.lib)
Vous pouvez utiliser le mécanisme d’adhésion POOL_NX_OPTIN pour un projet .lib, mais les projets liés à .lib doivent généralement utiliser POOL_NX_OPTIN. Au minimum, le projet qui implémente la routine DriverEntry doit contenir l’appel de fonction suivant :
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);