Я пытаюсь скомпилировать образец драйвера только для отображения, который предоставляет Microsoft, который называется KMDOD.
Я использую Visual Studio 2017 с WDK для Windows 10, версия 1809.
Я просто следовал инструкциям здесь , однако у меня возникли некоторые проблемы.
Сначала при попытке построить проект интерфейсы DxgkDdiStopDeviceAndReleasePostDisplayOwnership
DxgkDdiSystemDisplayEnable
DxgkDdiSystemDisplayWrite
не распознаются как тот же тип, что и функция, на которую они указывают. Однако после проверки их типа они просто NTSTATUS как моя функция. Я пытался решить это, набирая мои указатели функций, когда я назначаю их. Я не знаю, является ли этот подход правильным, но теперь я смог пропустить эти ошибки.
Оригинальный пример кода без типов приведен здесь здесь
Следующая проблема, которую я обнаружил, заключается в том, что при попытке создать проект выдается ошибка LNK2019, говорящая:
неразрешенный внешний символ "void __cdecl оператор delete (void *, unsigned __int64)" (?? 3 @ YAXPEAX_K @ Z), на который есть ссылка в функции "public: void * __cdecl BASIC_DISPLAY_DRIVER ::` скалярное удаление деструктора '(unsigned int) "(?? _GBASIC_DISPLAY_DRIVER @@ QEAAPEAXI @ Z)
в объекте BDD_DDI.obj
Кроме того, в SampleDisplay.sys появляется неразрешенный внешний вид LNK1120 1, который, как я полагаю, вызван предыдущей ошибкой компоновки.
Как я могу решить эту ошибку связывания?