ССЫЛКА: ошибка LNK2001: неразрешенный внешний символ NtProcessStartup

Я новичок в разработке драйверов и мини-фильтров для Windows и пытаюсь создать nullFilter с использованием инструментов командной строки. Поэтому я добавил #pragma comment(lib, "FltMgr.lib") в файл .c и успешно выполнил следующие команды:

cl.exe /nologo /Fo../../bin\filter.obj /c filter.c /D _AMD64_
rc.exe /nologo /Fo../../bin\filter.res filter.rc

Однако, когда я пытаюсь создать файл sys:

link.exe /nologo /DRIVER:WDM /out:../../bin\filter.sys ../../bin\filter.obj ../../bin\filter.res
LINK : error LNK2001: unresolved external symbol NtProcessStartup
../../bin\filter.sys : fatal error LNK1120: 1 unresolved externals

Я использую VS2012 Express и WDM8. Моя переменная среды LIB:

C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\amd64;C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\km\x64;

Что я делаю не так? Я что-то упускаю?


person user1973167    schedule 30.05.2016    source источник


Ответы (1)


Функция NtProcessStartup для разработки драйверов является тем же, чем «main» для обычных программ на C. Другими словами, это функция входа в программу, которую вам нужно обеспечить самостоятельно. См. статью здесь для ознакомления и объяснения этой функции. Вы можете переопределить имя функции запуска, используя параметр компоновщика -entry. Установка '-entry:DriverEntry' является обычной практикой для разработки драйверов.

person Ton Plooij    schedule 30.05.2016
comment
Привет. Я столкнулся с аналогичной проблемой, как указано выше. Моя проблема подробно описана в приведенной ниже ссылке: stackoverflow.com/questions/37584201/ По вашему совету я попытался добавить /entry:DriverEntry в меню компоновщика моего проекта. Но теперь я получаю сообщение об ошибке LNK2001: неразрешенный внешний символ _DriverEntry. Можете ли вы сказать мне, где я ошибаюсь? - person jain; 02.06.2016
comment
Смотрите мой ответ на вопрос по ссылке, которую вы дали. Вы не должны получать ошибку NtProcessStartup для приложений, не связанных с драйверами устройств. - person Ton Plooij; 02.06.2016