api: make nci.lib work on x86
This is an appalling hack. We need the lib tool to generate a coff lib with the "undecorate" parameter. And apparently the only way to do this with the MSVC tools is by making a stub object, and then rewriting the symbols using the def file. See Q131313 for Microsoft-sanctioned details. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
parent
7f35f0dbab
commit
724508d61f
@ -121,7 +121,8 @@
|
||||
<PreprocessorDefinitions Condition="'$(Platform)'=='ARM64'">_M_ARM64=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<PreLinkEvent>
|
||||
<Command>lib.exe /def:nci.def /out:"$(IntDir)nci.lib" /machine:$(PlatformTarget) /nologo</Command>
|
||||
<Command>cl.exe /nologo /DGENERATE_LIB /Ob0 /c /Fo"$(IntDir)nci.obj" /Tc nci.h
|
||||
lib.exe /def:nci.def /out:"$(IntDir)nci.lib" /machine:$(PlatformTarget) /nologo "$(IntDir)nci.obj"</Command>
|
||||
</PreLinkEvent>
|
||||
<Link>
|
||||
<DelayLoadDLLs>bcrypt.dll;iphlpapi.dll;nci.dll;newdev.dll;version.dll</DelayLoadDLLs>
|
||||
@ -201,4 +202,4 @@
|
||||
<Target Name="CleanSignTarget">
|
||||
<Delete Files="$(IntermediateOutputPath)$(TargetName).sign" />
|
||||
</Target>
|
||||
</Project>
|
||||
</Project>
|
@ -1,3 +1,4 @@
|
||||
LIBRARY wintun.dll
|
||||
EXPORTS
|
||||
WintunAllocateSendPacket
|
||||
WintunCreateAdapter
|
||||
|
@ -1,3 +1,4 @@
|
||||
LIBRARY nci.dll
|
||||
EXPORTS
|
||||
NciGetConnectionName
|
||||
NciSetConnectionName
|
||||
|
17
api/nci.h
17
api/nci.h
@ -7,10 +7,21 @@
|
||||
|
||||
#include <Windows.h>
|
||||
|
||||
extern DWORD WINAPI NciSetConnectionName(_In_ const GUID *Guid, _In_z_ const WCHAR *NewName);
|
||||
#ifdef GENERATE_LIB
|
||||
# define DECLSPEC __declspec(dllexport)
|
||||
# define STUB { return 0; }
|
||||
#else
|
||||
# define DECLSPEC __declspec(dllimport)
|
||||
# define STUB ;
|
||||
#endif
|
||||
|
||||
extern DWORD WINAPI NciGetConnectionName(
|
||||
|
||||
EXTERN_C DECLSPEC DWORD WINAPI
|
||||
NciSetConnectionName(_In_ const GUID *Guid, _In_z_ const WCHAR *NewName) STUB
|
||||
|
||||
EXTERN_C DECLSPEC DWORD WINAPI
|
||||
NciGetConnectionName(
|
||||
_In_ const GUID *Guid,
|
||||
_Out_z_bytecap_(InDestNameBytes) WCHAR *Name,
|
||||
_In_ DWORD InDestNameBytes,
|
||||
_Out_opt_ DWORD *OutDestNameBytes);
|
||||
_Out_opt_ DWORD *OutDestNameBytes) STUB
|
Loading…
Reference in New Issue
Block a user