Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Warnung C30033: Die ausführbare Zuordnung wurde in einem Treiber erkannt, der mit POOL_NX_OPTINkompiliert wurde. Dieser Treiber wurde festgestellt, dass er zur Laufzeit von einem anderen Treiber geladen wird. Überprüfen Sie, ob der Ladetreiber ExInitializeDriverRuntime(DrvRtPoolNxOptIn) aufruft, in seinem DriverEntry.
BANNED_MEM_ALLOCATION_MAYBE_UNSAFE_DRIVER_LOADED
Es wurde festgestellt, dass es sich um eine DLL handelt, die von einem anderen Treiber geladen wird und daher keine vollständige Initialisierungsfunktion aufweist. Überprüfen Sie, ob der Ladetreiber folgendes ist:
- Kompiliert mit POOL_NX_OPTIN=1
- Ruft ExInitializeDriverRuntime(DrvRtPoolNxOptIn) in seiner Initialisierungsfunktion auf.
Wenn der Ladetreiber diese korrekt angibt, kann die Warnung ignoriert werden.
Beispiel
Der folgende Code in jedem Ladeprogramm der DLL bedeutet, dass Sie die Änderung vornehmen sollten (gemäß dem sicheren Beispiel unten)
In der Quelldatei
C_DEFINES=$(C_DEFINES)
In DriverEntry-, bevor eine Speicherzuweisung stattfindet:
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
…
// No call to ExInitializeDriverRuntime
return(status)
}
Der folgende Code in jedem Ladeprogramm der DLL bedeutet, dass Sie die Warnung ignorieren können.
Fügen Sie in der Quelldatei
C_DEFINES=$(C_DEFINES) -DPOOL_NX_OPTIN=1
In DriverEntry-, bevor eine Speicherzuweisung stattfindet:
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
ExInitializeDriverRuntime( DrvRtPoolNxOptIn );
…
Beispiel Nr. 2
Eine zweite Möglichkeit, dies zu beheben, besteht darin, dass jeder Aufruf explizit auf nicht ausführbaren Speicher verweist.
Der folgende Code generiert diese Warnung.
ExAllocatePoolWithTag(NonPagedPool, numberOfBytes, 'xppn');
Der folgende Code vermeidet diese Warnung:
ExAllocatePoolWithTag(NonPagedPoolNx, numberOfBytes, 'xppn');