Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
waarschuwing C30033: Uitvoerbare toewijzing is gedetecteerd in een stuurprogramma dat is gecompileerd met POOL_NX_OPTIN. Dit stuurprogramma is tijdens runtime door een ander stuurprogramma geladen. Controleer of het laadstuurprogramma ExInitializeDriverRuntime(DrvRtPoolNxOptIn) in de DriverEntry.
BANNED_MEM_ALLOCATION_MAYBE_UNSAFE_DRIVER_LOADED
Er is vastgesteld dat dit een DLL is die door een ander stuurprogramma wordt geladen en daarom geen volledige initialisatiefunctie heeft. Controleer of het laadstuurprogramma het volgende is:
- Gecompileerd met POOL_NX_OPTIN=1
- Roept ExInitializeDriverRuntime(DrvRtPoolNxOptIn) aan in de initialisatiefunctie
Als het laadstuurprogramma deze correct opgeeft, kan de waarschuwing worden genegeerd.
voorbeeld
De volgende code in elk laadprogramma van de DLL betekent dat u de wijziging moet aanbrengen (volgens het onderstaande veilige voorbeeld)
In het bronbestand
C_DEFINES=$(C_DEFINES)
In DriverEntry, voordat er geheugentoewijzing plaatsvindt:
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
…
// No call to ExInitializeDriverRuntime
return(status)
}
De volgende code in elk laadprogramma van de DLL betekent dat u de waarschuwing kunt negeren.
Voeg het bronbestand toe
C_DEFINES=$(C_DEFINES) -DPOOL_NX_OPTIN=1
In DriverEntry, voordat er geheugentoewijzing plaatsvindt:
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
ExInitializeDriverRuntime( DrvRtPoolNxOptIn );
…
voorbeeld 2
Een tweede manier om dit op te lossen, is door elke aanroep expliciet te verwijzen naar niet-uitvoerbaar geheugen.
Met de volgende code wordt deze waarschuwing gegenereerd.
ExAllocatePoolWithTag(NonPagedPool, numberOfBytes, 'xppn');
De volgende code voorkomt deze waarschuwing:
ExAllocatePoolWithTag(NonPagedPoolNx, numberOfBytes, 'xppn');