Платформа фильтрации Windows - неразрешенные внешние символы

Я пишу драйвер ядра Windows Filtering Platform (WFP) и пытаюсь добавить некоторые выноски.

Я использую некоторые FWPM_LAYER GUID, такие как

FWPM_LAYER_OUTBOUND_TRANSPORT_V4
FWPM_LAYER_OUTBOUND_TRANSPORT_V6
FWPM_LAYER_ALE_AUTH_CONNECT_V4
FWPM_LAYER_ALE_AUTH_CONNECT_V6

Однако я получаю неразрешенные внешние символы при их использовании.

Error   LNK2001 unresolved external symbol _FWPM_LAYER_OUTBOUND_TRANSPORT_V4
Error   LNK2001 unresolved external symbol _FWPM_LAYER_OUTBOUND_TRANSPORT_V6
Error   LNK2001 unresolved external symbol _FWPM_LAYER_ALE_AUTH_CONNECT_V4
Error   LNK2001 unresolved external symbol _FWPM_LAYER_ALE_AUTH_CONNECT_V6

Я использую следующие заголовки

#define NDIS61 1

#include <ntifs.h>
#include <ntddk.h>
#include <wdf.h>

#pragma warning(push)
#pragma warning(disable: 4201)
#include <fwpsk.h>
#pragma warning(pop)

#include <fwpmk.h>
#include <fwpvi.h>
#include <guiddef.h>
#include <initguid.h>
#include <devguid.h>

И я ссылаюсь на следующие дополнительные зависимости.

$(DDK_LIB_PATH)wdmsec.lib
$(DDK_LIB_PATH)fwpkclnt.lib

Я не могу найти то, что мне не хватает, кажется, что эти GUID находятся внутри fwmpk.h который находится в Fwpkclnt.lib библиотека, против которой я строю.

1 ответ

Решение

Как ответил RbMm в комментариях, решение было перенести #include <initguid.h> заявление перед include <fwmpk.h> заявление.

#define NDIS61 1

#include <ntifs.h>
#include <ntddk.h>
#include <wdf.h>

#include <guiddef.h>
#include <initguid.h>
#include <devguid.h>

#pragma warning(push)
#pragma warning(disable: 4201)
#include <fwpsk.h>
#pragma warning(pop)

#include <fwpmk.h>
#include <fwpvi.h>
Другие вопросы по тегам