C30035
advertencia C30035: se realizó una llamada a una función que se debe realizar desde dentro de la función de inicialización (por ejemplo, DriverEntry() o DllInitialize()). PREfast no pudo determinar si la llamada se realizó desde la función de inicialización.
BANNED_MEM_ALLOCATION_MAYBE_BAD_CALL_SITE
El código se compiló con la macro POOL_NX_OPTIN, pero la inicialización no se produjo dentro de DriverEntry() o DllInitialize(). Para corregirlo, mueva la llamada dentro de la función de inicialización.
Ejemplo
El código siguiente genera esta advertencia.
En el archivo de orígenes:
C_DEFINES=$(C_DEFINES) -DPOOL_NX_OPTIN=1
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
MakeSafeInitialization ();
…
}
void MakeSafeInitialization()
{
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
}
El código siguiente evita esta advertencia:
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
…
}