Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
предупреждение C30035: вызов был выполнен в функцию, которая должна выполняться внутри функции инициализации (например, DriverEntry() или DllInitialize()). PREfast не удалось определить, был ли вызов выполнен из функции инициализации.
BANNED_MEM_ALLOCATION_MAYBE_BAD_CALL_SITE
Код был скомпилирован с помощью макроса POOL_NX_OPTIN, но инициализация не произошла внутри DriverEntry() или DllInitialize(). Чтобы устранить эту проблему, переместите вызов внутри функции инициализации.
Пример
Следующий код создает это предупреждение.
В файле источников:
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);
}
Следующий код избегает этого предупреждения:
NTSTATUS
DriverEntry (
_In_ PDRIVER_OBJECT DriverObject,
_In_ PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
…
}