WFPSamplerCalloutDriver 构建失败

WFPSamplerCalloutDriver failed to build

当我尝试构建 WFPSamplerCalloutDriver 时,它无法 link 到 Syslib/WFPSampler.lib,在附加依赖项中它有 ...\syslib\$(IntDir)\WFPSampler.lib,但仍然有这些错误:

1>------ 构建开始:项目:WFPSamplerCalloutDriver,配置:发布 x64 ------ 1> 使用工具集 'WindowsKernelModeDriver10.0' 和 'Desktop' 目标平台构建 'WFPSamplerCalloutDriver'。 1> 冲压 .\x64\Release\WFPSamplerCalloutDriver.inf [Version] 部分 with DriverVer=04/26/2017,11.34.2.116 1>CompletionFunctions_BasicPacketModificationCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprClassifyDataDestroyLocalCopy(struct CLASSIFY_DATA_ * *)" (?KrnlHlprClassifyDataDestroyLocalCopy@@YAXPEAPEAUCLASSIFY_DATA_@@@Z) 1>CompletionFunctions_BasicStreamInjectionCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprClassifyDataDestroyLocalCopy(struct CLASSIFY_DATA_ * *)" (?KrnlHlprClassifyDataDestroyLocalCopy@@YAXPEAPEAUCLASSIFY_DATA_@@@Z) 1>CompletionFunctions_PendAuthorizationCallouts.obj : 错误 LNK2001: 未解析的外部符号 "void __cdecl KrnlHlprClassifyDataDestroyLocalCopy(struct CLASSIFY_DATA_ * *)" (?KrnlHlprClassifyDataDestroyLocalCopy@@YAXPEAPEAUCLASSIFY_DATA_@@@Z) 1>CompletionFunctions_ProxyCallouts.obj : 错误 LNK2001: 未解析的外部符号 "void __cdecl KrnlHlprClassifyDataDestroyLocalCopy(struct CLASSIFY_DATA_ * *)" (?KrnlHlprClassifyDataDestroyLocalCopy@@YAXPEAPEAUCLASSIFY_DATA_@@@Z) 1>ClassifyFunctions_PendAuthorizationCallouts.obj : 错误 LNK2001: 未解析的外部符号 "void __cdecl KrnlHlprClassifyDataDestroyLocalCopy(struct CLASSIFY_DATA_ * *)" (?KrnlHlprClassifyDataDestroyLocalCopy@@YAXPEAPEAUCLASSIFY_DATA_@@@Z) 1>ClassifyFunctions_ProxyCallouts.obj : 错误 LNK2001: 未解析的外部符号 "void __cdecl KrnlHlprClassifyDataDestroyLocalCopy(struct CLASSIFY_DATA_ * *)" (?KrnlHlprClassifyDataDestroyLocalCopy@@YAXPEAPEAUCLASSIFY_DATA_@@@Z) 1>CompletionFunctions_AdvancedPacketInjectionCallouts.obj : 错误 LNK2001: 未解析的外部符号 "void __cdecl KrnlHlprClassifyDataDestroyLocalCopy(struct CLASSIFY_DATA_ * *)" (?KrnlHlprClassifyDataDestroyLocalCopy@@YAXPEAPEAUCLASSIFY_DATA_@@@Z) 1>CompletionFunctions_BasicPacketInjectionCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprClassifyDataDestroyLocalCopy(struct CLASSIFY_DATA_ * *)" (?KrnlHlprClassifyDataDestroyLocalCopy@@YAXPEAPEAUCLASSIFY_DATA_@@@Z) 1>ClassifyFunctions_AdvancedPacketInjectionCallouts.obj : 错误 LNK2001: 未解析的外部符号 "void __cdecl KrnlHlprClassifyDataDestroyLocalCopy(struct CLASSIFY_DATA_ * *)" (?KrnlHlprClassifyDataDestroyLocalCopy@@YAXPEAPEAUCLASSIFY_DATA_@@@Z) 1>ClassifyFunctions_BasicPacketInjectionCallouts.obj : 错误 LNK2001: 未解析的外部符号 "void __cdecl KrnlHlprClassifyDataDestroyLocalCopy(struct CLASSIFY_DATA_ * *)" (?KrnlHlprClassifyDataDestroyLocalCopy@@YAXPEAPEAUCLASSIFY_DATA_@@@Z) 1>ClassifyFunctions_BasicPacketModificationCallouts.obj : 错误 LNK2001: 未解析的外部符号 "void __cdecl KrnlHlprClassifyDataDestroyLocalCopy(struct CLASSIFY_DATA_ * *)" (?KrnlHlprClassifyDataDestroyLocalCopy@@YAXPEAPEAUCLASSIFY_DATA_@@@Z) 1>ClassifyFunctions_BasicStreamInjectionCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprClassifyDataDestroyLocalCopy(struct CLASSIFY_DATA_ * *)" (?KrnlHlprClassifyDataDestroyLocalCopy@@YAXPEAPEAUCLASSIFY_DATA_@@@Z) 1>CompletionFunctions_BasicPacketModificationCallouts.obj : 错误 LNK2001: 未解析的外部符号 "void __cdecl KrnlHlprInjectionDataDestroy(struct INJECTION_DATA_ * *)" (?KrnlHlprInjectionDataDestroy@@YAXPEAPEAUINJECTION_DATA_@@@Z) 1>CompletionFunctions_BasicStreamInjectionCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprInjectionDataDestroy(struct INJECTION_DATA_ * *)" (?KrnlHlprInjectionDataDestroy@@YAXPEAPEAUINJECTION_DATA_@@@Z) 1>CompletionFunctions_PendAuthorizationCallouts.obj : 错误 LNK2001: 未解析的外部符号 "void __cdecl KrnlHlprInjectionDataDestroy(struct INJECTION_DATA_ * *)" (?KrnlHlprInjectionDataDestroy@@YAXPEAPEAUINJECTION_DATA_@@@Z) 1>CompletionFunctions_ProxyCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprInjectionDataDestroy(struct INJECTION_DATA_ * *)" (?KrnlHlprInjectionDataDestroy@@YAXPEAPEAUINJECTION_DATA_@@@Z) 1>ClassifyFunctions_PendAuthorizationCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprInjectionDataDestroy(struct INJECTION_DATA_ * *)" (?KrnlHlprInjectionDataDestroy@@YAXPEAPEAUINJECTION_DATA_@@@Z) 1>ClassifyFunctions_ProxyCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprInjectionDataDestroy(struct INJECTION_DATA_ * *)" (?KrnlHlprInjectionDataDestroy@@YAXPEAPEAUINJECTION_DATA_@@@Z) 1>CompletionFunctions_AdvancedPacketInjectionCallouts.obj : 错误 LNK2001: 未解析的外部符号 "void __cdecl KrnlHlprInjectionDataDestroy(struct INJECTION_DATA_ * *)" (?KrnlHlprInjectionDataDestroy@@YAXPEAPEAUINJECTION_DATA_@@@Z) 1>CompletionFunctions_BasicPacketInjectionCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprInjectionDataDestroy(struct INJECTION_DATA_ * *)" (?KrnlHlprInjectionDataDestroy@@YAXPEAPEAUINJECTION_DATA_@@@Z) 1>ClassifyFunctions_AdvancedPacketInjectionCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprInjectionDataDestroy(struct INJECTION_DATA_ * *)" (?KrnlHlprInjectionDataDestroy@@YAXPEAPEAUINJECTION_DATA_@@@Z) 1>ClassifyFunctions_BasicPacketInjectionCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprInjectionDataDestroy(struct INJECTION_DATA_ * *)" (?KrnlHlprInjectionDataDestroy@@YAXPEAPEAUINJECTION_DATA_@@@Z) 1>ClassifyFunctions_BasicPacketModificationCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprInjectionDataDestroy(struct INJECTION_DATA_ * *)" (?KrnlHlprInjectionDataDestroy@@YAXPEAPEAUINJECTION_DATA_@@@Z) 1>ClassifyFunctions_BasicStreamInjectionCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprInjectionDataDestroy(struct INJECTION_DATA_ * *)" (?KrnlHlprInjectionDataDestroy@@YAXPEAPEAUINJECTION_DATA_@@@Z) 1>ClassifyFunctions_PendAuthorizationCallouts.obj : 错误 LNK2001: 未解析的外部符号 "void __cdecl KrnlHlprDPCDataDestroy(struct DPC_DATA_ * *)" (?KrnlHlprDPCDataDestroy@@YAXPEAPEAUDPC_DATA_@@@Z) 1>ClassifyFunctions_PendEndpointClosureCallouts.obj : 错误 LNK2001: 未解析的外部符号 "void __cdecl KrnlHlprDPCDataDestroy(struct DPC_DATA_ * *)" (?KrnlHlprDPCDataDestroy@@YAXPEAPEAUDPC_DATA_@@@Z) 1>ClassifyFunctions_ProxyCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprDPCDataDestroy(struct DPC_DATA_ * *)" (?KrnlHlprDPCDataDestroy@@YAXPEAPEAUDPC_DATA_@@@Z) 1>ClassifyFunctions_AdvancedPacketInjectionCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprDPCDataDestroy(struct DPC_DATA_ * *)" (?KrnlHlprDPCDataDestroy@@YAXPEAPEAUDPC_DATA_@@@Z) 1>ClassifyFunctions_BasicPacketInjectionCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprDPCDataDestroy(struct DPC_DATA_ * *)" (?KrnlHlprDPCDataDestroy@@YAXPEAPEAUDPC_DATA_@@@Z) 1>ClassifyFunctions_BasicPacketModificationCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprDPCDataDestroy(struct DPC_DATA_ * *)" (?KrnlHlprDPCDataDestroy@@YAXPEAPEAUDPC_DATA_@@@Z) 1>ClassifyFunctions_BasicStreamInjectionCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprDPCDataDestroy(struct DPC_DATA_ * *)" (?KrnlHlprDPCDataDestroy@@YAXPEAPEAUDPC_DATA_@@@Z) 1>NotifyFunctions_BasicCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprWorkItemDataDestroy(struct WORKITEM_DATA_ * *)" (?KrnlHlprWorkItemDataDestroy@@YAXPEAPEAUWORKITEM_DATA_@@@Z) 1>NotifyFunctions_FastCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprWorkItemDataDestroy(struct WORKITEM_DATA_ * *)" (?KrnlHlprWorkItemDataDestroy@@YAXPEAPEAUWORKITEM_DATA_@@@Z) 1>NotifyFunctions_PendCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprWorkItemDataDestroy(struct WORKITEM_DATA_ * *)" (?KrnlHlprWorkItemDataDestroy@@YAXPEAPEAUWORKITEM_DATA_@@@Z) 1>NotifyFunctions_ProxyCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprWorkItemDataDestroy(struct WORKITEM_DATA_ * *)" (?KrnlHlprWorkItemDataDestroy@@YAXPEAPEAUWORKITEM_DATA_@@@Z) 1>ClassifyFunctions_PendAuthorizationCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprWorkItemDataDestroy(struct WORKITEM_DATA_ * *)" (?KrnlHlprWorkItemDataDestroy@@YAXPEAPEAUWORKITEM_DATA_@@@Z) 1>ClassifyFunctions_PendEndpointClosureCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprWorkItemDataDestroy(struct WORKITEM_DATA_ * *)" (?KrnlHlprWorkItemDataDestroy@@YAXPEAPEAUWORKITEM_DATA_@@@Z) 1>ClassifyFunctions_ProxyCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprWorkItemDataDestroy(struct WORKITEM_DATA_ * *)" (?KrnlHlprWorkItemDataDestroy@@YAXPEAPEAUWORKITEM_DATA_@@@Z) 1>NotifyFunctions_AdvancedCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprWorkItemDataDestroy(struct WORKITEM_DATA_ * *)" (?KrnlHlprWorkItemDataDestroy@@YAXPEAPEAUWORKITEM_DATA_@@@Z) 1>ClassifyFunctions_AdvancedPacketInjectionCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprWorkItemDataDestroy(struct WORKITEM_DATA_ * *)" (?KrnlHlprWorkItemDataDestroy@@YAXPEAPEAUWORKITEM_DATA_@@@Z) 1>ClassifyFunctions_BasicPacketInjectionCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprWorkItemDataDestroy(struct WORKITEM_DATA_ * *)" (?KrnlHlprWorkItemDataDestroy@@YAXPEAPEAUWORKITEM_DATA_@@@Z) 1>ClassifyFunctions_BasicPacketModificationCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprWorkItemDataDestroy(struct WORKITEM_DATA_ * *)" (?KrnlHlprWorkItemDataDestroy@@YAXPEAPEAUWORKITEM_DATA_@@@Z) 1>ClassifyFunctions_BasicStreamInjectionCallouts.obj:错误 LNK2001:无法解析的外部符号 "void __cdecl KrnlHlprWorkItemDataDestroy(struct WORKITEM_DATA_ * *)" (?KrnlHlprWorkItemDataDestroy@@YAXPEAPEAUWORKITEM_DATA_@@@Z) 1>ClassifyFunctions_PendAuthorizationCallouts.obj : error LNK2019: 未解析的外部符号 "void __cdecl KrnlHlprPendDataDestroy(struct PEND_DATA_ * *)" (?KrnlHlprPendDataDestroy@@YAXPEAPEAUPEND_DATA_@@@Z) 在函数 "void __cdecl ClassifyPendAuthorization(struct FWPS_INCOMING_VALUES0_ const *,struct FWPS_INCOMING_METADATA_VALUES0_ const *,void *,void const *,struct FWPS_FILTER2_ const *,unsigned __int64,struct FWPS_CLASSIFY_OUT0_ *)" (?ClassifyPendAuthorization@@YAXPEBUFWPS_INCOMING_VALUES0_@@PEBUFWPS_INCOMING_METADATA_VALUES0_@@PEAXPEBXPEBUFWPS_FILTER2_@@_KPEAUFWPS_CLASSIFY_OUT0_@@@Z) 1>ClassifyFunctions_PendEndpointClosureCallouts.obj : 错误 LNK2001: 未解析的外部符号 "void __cdecl KrnlHlprPendDataDestroy(struct PEND_DATA_ * *)" (?KrnlHlprPendDataDestroy@@YAXPEAPEAUPEND_DATA_@@@Z) 1>NotifyFunctions_FlowDelete.obj : 错误 LNK2001: 未解析的外部符号 "void __cdecl KrnlHlprPendDataDestroy(struct PEND_DATA_ * *)" (?KrnlHlprPendDataDestroy@@YAXPEAPEAUPEND_DATA_@@@Z) 1>ClassifyFunctions_ProxyCallouts.obj : error LNK2019: 未解析的外部符号 "void __cdecl KrnlHlprRedirectDataDestroy(struct REDIRECT_DATA_ * *)" (?KrnlHlprRedirectDataDestroy@@YAXPEAPEAUREDIRECT_DATA_@@@Z) 在函数 "void __cdecl ClassifyProxyByALERedirect(struct FWPS_INCOMING_VALUES0_ const *,struct FWPS_INCOMING_METADATA_VALUES0_ const *,void *,void const *,struct FWPS_FILTER2_ const *,unsigned __int64,struct FWPS_CLASSIFY_OUT0_ *)" (?ClassifyProxyByALERRedirect@@YAXPEBUFWPS_INCOMING_VALUES0_@@PEBUFWPS_INCOMING_METADATA_VALUES0_@@PEAXPEBXPEBUFWPS_FILTER2_@@_KPEAUFWPS_CLASSIFY_OUT0_@@@Z) 1>NotifyFunctions_FlowDelete.obj:错误 LNK2019:未解析的外部符号 "long __cdecl KrnlHlprFlowContextDestroy(struct FLOW_CONTEXT_ * *)" (?KrnlHlprFlowContextDestroy@@YAJPEAPEAUFLOW_CONTEXT_@@@Z) 在函数 "void __cdecl NotifyFlowDeleteNotification(unsigned short,unsigned int,unsigned __int64)" (?NotifyFlowDeleteNotification@@YAXGI_K@Z) 1>WFPSampler.lib(HelperFunctions_ClassifyData.obj) : 错误 LNK2019: 未解析的外部符号 "void __cdecl KrnlHlprFwpsIncomingMetadataValuesDestroyLocalCopy(struct FWPS_INCOMING_METADATA_VALUES0_ * *)" (?KrnlHlprFwpsIncomingMetadataValuesDestroyLocalCopy@@YAXPEAPEAUFWPS_INCOMING_METADATA_VALUES0_@@@Z) 在函数 "void __cdecl KrnlHlprClassifyDataReleaseLocalCopy(struct CLASSIFY_DATA_ *)" 中引用 ( ?KrnlHlprClassifyDataReleaseLocalCopy@@YAXPEAUCLASSIFY_DATA_@@@Z) 1>WFPSampler.lib(HelperFunctions_ClassifyData.obj) : error LNK2019: 未解析的外部符号 "void __cdecl KrnlHlprFwpsStreamCalloutIOPacketDestroyLocalCopy(struct FWPS_STREAM_CALLOUT_IO_PACKET0_ * *)" (?KrnlHlprFwpsStreamCalloutIOPacketDestroyLocalCopy@@YAXPEAPEAUFWPS_STREAM_CALLOUT_IO_PACKET0_@@@Z) 在函数 "void __cdecl KrnlHlprClassifyDataReleaseLocalCopy(struct CLASSIFY_DATA_ *)" ( ?KrnlHlprClassifyDataReleaseLocalCopy@@YAXPEAUCLASSIFY_DATA_@@@Z) 1>x64\Release\WFPSamplerCalloutDriver.sys : fatal error LNK1120: 9 unresolved externals ========== 构建:0 次成功,1 次失败,1 次更新,0 次跳过 ==========

有人能帮忙吗?

我也遇到过同样的问题。看起来编译器在 Release 中省略了一些内联函数。如果您禁用内联扩展,那么一切正常。 (WFPSampler -> C/C++ -> 优化 -> 内联函数扩展 -> 禁用)