Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/SoftEtherVPN/SoftEtherVPN_Stable.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src/Neo6
diff options
context:
space:
mode:
Diffstat (limited to 'src/Neo6')
-rw-r--r--src/Neo6/NDIS6.c241
-rw-r--r--src/Neo6/NDIS6.h4
-rw-r--r--src/Neo6/Neo6.c21
-rw-r--r--src/Neo6/Neo6.h12
-rw-r--r--src/Neo6/Neo6.vcproj16
5 files changed, 237 insertions, 57 deletions
diff --git a/src/Neo6/NDIS6.c b/src/Neo6/NDIS6.c
index 0e62ddb8..c69246c0 100644
--- a/src/Neo6/NDIS6.c
+++ b/src/Neo6/NDIS6.c
@@ -208,11 +208,31 @@ NDIS_STATUS NeoNdisSetOptions(NDIS_HANDLE NdisDriverHandle, NDIS_HANDLE DriverCo
NDIS_STATUS NeoNdisPause(NDIS_HANDLE MiniportAdapterContext, PNDIS_MINIPORT_PAUSE_PARAMETERS MiniportPauseParameters)
{
+ UINT counter_dbg = 0;
+
+ ctx->Paused = true;
+
+ NeoLockPacketQueue();
+ NeoUnlockPacketQueue();
+
+ // Wait for complete all tasks
+ while (ctx->NumCurrentDispatch != 0)
+ {
+ NdisMSleep(10000);
+ counter_dbg++;
+ if (counter_dbg >= 1500)
+ {
+ break;
+ }
+ }
+
return NDIS_STATUS_SUCCESS;
}
NDIS_STATUS NeoNdisRestart(NDIS_HANDLE MiniportAdapterContext, PNDIS_MINIPORT_RESTART_PARAMETERS MiniportRestartParameters)
{
+ ctx->Paused = false;
+
return NDIS_STATUS_SUCCESS;
}
@@ -222,6 +242,7 @@ void NeoNdisReturnNetBufferLists(NDIS_HANDLE MiniportAdapterContext, PNET_BUFFER
void NeoNdisCancelSend(NDIS_HANDLE MiniportAdapterContext, PVOID CancelId)
{
+ //NeoNdisCrash2(__LINE__, __LINE__, __LINE__, __LINE__);
}
void NeoNdisDevicePnPEventNotify(NDIS_HANDLE MiniportAdapterContext, PNET_DEVICE_PNP_EVENT NetDevicePnPEvent)
@@ -234,6 +255,7 @@ void NeoNdisShutdownEx(NDIS_HANDLE MiniportAdapterContext, NDIS_SHUTDOWN_ACTION
void NeoNdisCancelOidRequest(NDIS_HANDLE MiniportAdapterContext, PVOID RequestId)
{
+ //NeoNdisCrash2(__LINE__, __LINE__, __LINE__, __LINE__);
}
// Initialization handler of adapter
@@ -243,6 +265,7 @@ NDIS_STATUS NeoNdisInitEx(NDIS_HANDLE MiniportAdapterHandle,
{
NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES attr;
NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES gen;
+ NDIS_PM_CAPABILITIES pnpcap;
if (ctx == NULL)
{
@@ -281,7 +304,7 @@ NDIS_STATUS NeoNdisInitEx(NDIS_HANDLE MiniportAdapterHandle,
ctx->Halting = FALSE;
ctx->Connected = ctx->ConnectedOld = FALSE;
- if (keep_link == false)
+ //if (keep_link == false)
{
ctx->ConnectedForce = TRUE;
}
@@ -305,6 +328,8 @@ NDIS_STATUS NeoNdisInitEx(NDIS_HANDLE MiniportAdapterHandle,
NdisMSetMiniportAttributes(ctx->NdisMiniport, (PNDIS_MINIPORT_ADAPTER_ATTRIBUTES)&attr);
+ NeoZero(&pnpcap, sizeof(pnpcap));
+
NeoZero(&gen, sizeof(gen));
gen.Header.Type = NDIS_OBJECT_TYPE_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES;
gen.Header.Revision = NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES_REVISION_2;
@@ -354,6 +379,15 @@ NDIS_STATUS NeoNdisInitEx(NDIS_HANDLE MiniportAdapterHandle,
gen.SupportedOidList = SupportedOids;
gen.SupportedOidListLength = sizeof(SupportedOids);
+ NeoZero(&pnpcap, sizeof(pnpcap));
+ pnpcap.Header.Type = NDIS_OBJECT_TYPE_DEFAULT;
+ pnpcap.Header.Revision = NDIS_PM_CAPABILITIES_REVISION_1;
+ pnpcap.Header.Size = NDIS_SIZEOF_NDIS_PM_CAPABILITIES_REVISION_1;
+ pnpcap.MinMagicPacketWakeUp = NdisDeviceStateUnspecified;
+ pnpcap.MinPatternWakeUp = NdisDeviceStateUnspecified;
+ pnpcap.MinLinkChangeWakeUp = NdisDeviceStateUnspecified;
+ gen.PowerManagementCapabilitiesEx = &pnpcap;
+
NdisMSetMiniportAttributes(ctx->NdisMiniport, (PNDIS_MINIPORT_ADAPTER_ATTRIBUTES)&gen);
// Initialize the received packet array
@@ -385,7 +419,7 @@ BOOL NeoNdisOnOpen(IRP *irp, IO_STACK_LOCATION *stack)
return FALSE;
}
- if (ctx->Opened != FALSE)
+ if (ctx->Opened)
{
// Another client is connected already
return FALSE;
@@ -412,6 +446,7 @@ BOOL NeoNdisOnOpen(IRP *irp, IO_STACK_LOCATION *stack)
// Close the device
BOOL NeoNdisOnClose(IRP *irp, IO_STACK_LOCATION *stack)
{
+ NEO_EVENT *free_event = NULL;
if (ctx == NULL)
{
return FALSE;
@@ -424,12 +459,21 @@ BOOL NeoNdisOnClose(IRP *irp, IO_STACK_LOCATION *stack)
}
ctx->Opened = FALSE;
- // Release the event
- NeoFreeEvent(ctx->Event);
- ctx->Event = NULL;
+ NeoLockPacketQueue();
+ {
+ // Release the event
+ free_event = ctx->Event;
+ ctx->Event = NULL;
+
+ // Release all packets
+ NeoClearPacketQueue(true);
+ }
+ NeoUnlockPacketQueue();
- // Release all packets
- NeoClearPacketQueue();
+ if (free_event != NULL)
+ {
+ NeoFreeEvent(free_event);
+ }
NeoSetConnectState(FALSE);
@@ -465,6 +509,8 @@ NTSTATUS NeoNdisDispatch(DEVICE_OBJECT *DeviceObject, IRP *Irp)
return NDIS_STATUS_FAILURE;
}
+ InterlockedIncrement(&ctx->NumCurrentDispatch);
+
// Get the IRP stack
stack = IoGetCurrentIrpStackLocation(Irp);
@@ -478,8 +524,11 @@ NTSTATUS NeoNdisDispatch(DEVICE_OBJECT *DeviceObject, IRP *Irp)
{
// Device driver is terminating
Irp->IoStatus.Information = STATUS_UNSUCCESSFUL;
+ InterlockedDecrement(&ctx->NumCurrentDispatch);
+
IoCompleteRequest(Irp, IO_NO_INCREMENT);
- return STATUS_UNSUCCESSFUL;
+
+ return STATUS_SUCCESS;
}
// Branch to each operation
@@ -586,6 +635,8 @@ NTSTATUS NeoNdisDispatch(DEVICE_OBJECT *DeviceObject, IRP *Irp)
break;
}
+ InterlockedDecrement(&ctx->NumCurrentDispatch);
+
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return STATUS_SUCCESS;
@@ -616,6 +667,7 @@ void NeoInitControlDevice()
ctx->DispatchTable[IRP_MJ_WRITE] =
ctx->DispatchTable[IRP_MJ_DEVICE_CONTROL] = NeoNdisDispatch;
ctx->Opened = FALSE;
+ ctx->Paused = FALSE;
// Generate the device name
sprintf(name_kernel, NDIS_NEO_DEVICE_NAME, ctx->HardwareID);
@@ -728,6 +780,12 @@ BOOL NeoLoadRegistory()
{
// Special MAC address
UINT ptr32 = (UINT)((UINT64)ctx);
+ LARGE_INTEGER current_time;
+ UCHAR *current_time_bytes;
+
+ KeQuerySystemTime(&current_time);
+
+ current_time_bytes = (UCHAR *)&current_time;
ctx->MacAddress[0] = 0x00;
ctx->MacAddress[1] = 0xAD;
@@ -735,6 +793,16 @@ BOOL NeoLoadRegistory()
ctx->MacAddress[3] = ((UCHAR *)(&ptr32))[1];
ctx->MacAddress[4] = ((UCHAR *)(&ptr32))[2];
ctx->MacAddress[5] = ((UCHAR *)(&ptr32))[3];
+
+ ctx->MacAddress[2] ^= current_time_bytes[0];
+ ctx->MacAddress[3] ^= current_time_bytes[1];
+ ctx->MacAddress[4] ^= current_time_bytes[2];
+ ctx->MacAddress[5] ^= current_time_bytes[3];
+
+ ctx->MacAddress[2] ^= current_time_bytes[4];
+ ctx->MacAddress[3] ^= current_time_bytes[5];
+ ctx->MacAddress[4] ^= current_time_bytes[6];
+ ctx->MacAddress[5] ^= current_time_bytes[7];
}
// Initialize the key name of the device name
@@ -820,6 +888,8 @@ VOID NeoNdisDriverUnload(PDRIVER_OBJECT DriverObject)
// Stop handler of adapter
void NeoNdisHaltEx(NDIS_HANDLE MiniportAdapterContext, NDIS_HALT_ACTION HaltAction)
{
+ NEO_EVENT *free_event = NULL;
+ UINT counter_dbg = 0;
if (ctx == NULL)
{
return;
@@ -832,15 +902,49 @@ void NeoNdisHaltEx(NDIS_HANDLE MiniportAdapterContext, NDIS_HALT_ACTION HaltActi
}
ctx->Halting = TRUE;
+ ctx->Opened = FALSE;
+
+ NeoLockPacketQueue();
+ {
+ // Release the event
+ free_event = ctx->Event;
+ ctx->Event = NULL;
+
+ // Release all packets
+ NeoClearPacketQueue(true);
+ }
+ NeoUnlockPacketQueue();
+
+ if (free_event != NULL)
+ {
+ NeoSet(free_event);
+ }
+
+ // Wait for complete all tasks
+ while (ctx->NumCurrentDispatch != 0)
+ {
+ NdisMSleep(10000);
+ counter_dbg++;
+ if (counter_dbg >= 1500)
+ {
+ break;
+ }
+ }
+
+ if (free_event != NULL)
+ {
+ NeoFreeEvent(free_event);
+ }
+
+ // Delete the control device
+ NeoFreeControlDevice();
+
// Stop the adapter
NeoStopAdapter();
// Release the packet array
NeoFreePacketArray();
- // Delete the control device
- NeoFreeControlDevice();
-
// Complete to stop
ctx->Initing = ctx->Inited = FALSE;
ctx->Connected = ctx->ConnectedForce = ctx->ConnectedOld = FALSE;
@@ -1294,28 +1398,80 @@ NDIS_STATUS NeoNdisSet(
*BytesRead = InformationBufferLength;
return NDIS_STATUS_SUCCESS;
+
+ case OID_PNP_SET_POWER:
+ case OID_PNP_QUERY_POWER:
+ // Power events
+ *BytesRead = InformationBufferLength;
+
+ return NDIS_STATUS_SUCCESS;
}
return NDIS_STATUS_INVALID_OID;
}
+// Set status values of NET_BUFFER_LISTs
+void NeoNdisSetNetBufferListsStatus(NET_BUFFER_LIST *nbl, UINT status)
+{
+ if (nbl == NULL)
+ {
+ return;
+ }
+
+ while (nbl != NULL)
+ {
+ NET_BUFFER_LIST_STATUS(nbl) = status;
+
+ nbl = NET_BUFFER_LIST_NEXT_NBL(nbl);
+ }
+}
+
// Packet send handler
void NeoNdisSendNetBufferLists(NDIS_HANDLE MiniportAdapterContext,
NET_BUFFER_LIST *NetBufferLists,
NDIS_PORT_NUMBER PortNumber,
ULONG SendFlags)
{
+ bool is_dispatch_level = SendFlags & NDIS_SEND_FLAGS_DISPATCH_LEVEL;
+ UINT send_complete_flags = 0;
if (ctx == NULL)
{
return;
}
+ if (is_dispatch_level)
+ {
+ send_complete_flags |= NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL;
+ }
+
+ InterlockedIncrement(&ctx->NumCurrentDispatch);
+
// Update the connection state
NeoCheckConnectState();
- if (NeoNdisSendPacketsHaltCheck(NetBufferLists) == FALSE)
+ if (ctx->Halting != FALSE || ctx->Opened == FALSE || ctx->Paused)
{
- // Device is stopped
+ UINT status = NDIS_STATUS_FAILURE;
+
+ if (ctx->Paused)
+ {
+ status = NDIS_STATUS_PAUSED;
+ }
+ else if (ctx->Halting)
+ {
+ status = NDIS_STATUS_FAILURE;
+ }
+ else if (ctx->Opened == false && keep_link)
+ {
+ status = NDIS_STATUS_SUCCESS;
+ }
+
+ NeoNdisSetNetBufferListsStatus(NetBufferLists, status);
+
+ InterlockedDecrement(&ctx->NumCurrentDispatch);
+
+ NdisMSendNetBufferListsComplete(ctx->NdisMiniport, NetBufferLists, send_complete_flags);
+
return;
}
@@ -1323,10 +1479,32 @@ void NeoNdisSendNetBufferLists(NDIS_HANDLE MiniportAdapterContext,
NeoLockPacketQueue();
{
NET_BUFFER_LIST *nbl;
- if (NeoNdisSendPacketsHaltCheck(NetBufferLists) == FALSE)
+
+ if (ctx->Halting != FALSE || ctx->Opened == FALSE || ctx->Paused)
{
- // Device is stopped
+ UINT status = NDIS_STATUS_FAILURE;
+
+ if (ctx->Paused)
+ {
+ status = NDIS_STATUS_PAUSED;
+ }
+ else if (ctx->Halting)
+ {
+ status = NDIS_STATUS_FAILURE;
+ }
+ else if (ctx->Opened == false && keep_link)
+ {
+ status = NDIS_STATUS_SUCCESS;
+ }
+
NeoUnlockPacketQueue();
+
+ NeoNdisSetNetBufferListsStatus(NetBufferLists, status);
+
+ InterlockedDecrement(&ctx->NumCurrentDispatch);
+
+ NdisMSendNetBufferListsComplete(ctx->NdisMiniport, NetBufferLists, send_complete_flags);
+
return;
}
@@ -1336,6 +1514,8 @@ void NeoNdisSendNetBufferLists(NDIS_HANDLE MiniportAdapterContext,
{
NET_BUFFER *nb = NET_BUFFER_LIST_FIRST_NB(nbl);
+ NET_BUFFER_LIST_STATUS(nbl) = NDIS_STATUS_SUCCESS;
+
while (nb != NULL)
{
UINT size = NET_BUFFER_DATA_LENGTH(nb);
@@ -1388,33 +1568,15 @@ void NeoNdisSendNetBufferLists(NDIS_HANDLE MiniportAdapterContext,
nbl = NET_BUFFER_LIST_NEXT_NBL(nbl);
}
- }
+ // Reception event
+ NeoSet(ctx->Event);
+ }
NeoUnlockPacketQueue();
// Notify the transmission completion
- NdisMSendNetBufferListsComplete(ctx->NdisMiniport, NetBufferLists, NDIS_STATUS_SUCCESS);
-
- // Reception event
- NeoSet(ctx->Event);
-}
-
-// Stop check of packet transmission
-BOOL NeoNdisSendPacketsHaltCheck(NET_BUFFER_LIST *NetBufferLists)
-{
- if (ctx == NULL)
- {
- return FALSE;
- }
-
- if (ctx->Halting != FALSE || ctx->Opened == FALSE)
- {
- // Halting
- NdisMSendNetBufferListsComplete(ctx->NdisMiniport, NetBufferLists, NDIS_STATUS_FAILURE);
-
- return FALSE;
- }
- return TRUE;
+ InterlockedDecrement(&ctx->NumCurrentDispatch);
+ NdisMSendNetBufferListsComplete(ctx->NdisMiniport, NetBufferLists, send_complete_flags);
}
// Initialize the packet array
@@ -1473,6 +1635,7 @@ PACKET_BUFFER *NeoNewPacketBuffer()
p1.ProtocolId = NDIS_PROTOCOL_ID_DEFAULT;
p1.fAllocateNetBuffer = TRUE;
p1.DataSize = NEO_MAX_PACKET_SIZE;
+ p1.PoolTag = 'SETH';
p->NetBufferListPool = NdisAllocateNetBufferListPool(NULL, &p1);
// Create a NET_BUFFER_LIST
@@ -1746,7 +1909,7 @@ void *NeoMalloc(UINT size)
}
// Allocate the non-paged memory
- r = NdisAllocateMemoryWithTag(&p, size, 0);
+ r = NdisAllocateMemoryWithTag(&p, size, 'SETH');
if (NG(r))
{
diff --git a/src/Neo6/NDIS6.h b/src/Neo6/NDIS6.h
index 3056a704..306672c6 100644
--- a/src/Neo6/NDIS6.h
+++ b/src/Neo6/NDIS6.h
@@ -184,6 +184,8 @@ static UINT SupportedOids[] =
OID_GEN_STATISTICS,
OID_GEN_INTERRUPT_MODERATION,
OID_GEN_LINK_PARAMETERS,
+ OID_PNP_SET_POWER,
+ OID_PNP_QUERY_POWER,
};
#define NEO_MEDIA NdisMedium802_3
#define MAX_MULTICAST 32
@@ -237,7 +239,7 @@ void NeoNdisSendNetBufferLists(NDIS_HANDLE MiniportAdapterContext,
NET_BUFFER_LIST *NetBufferLists,
NDIS_PORT_NUMBER PortNumber,
ULONG SendFlags);
-BOOL NeoNdisSendPacketsHaltCheck(NET_BUFFER_LIST *NetBufferLists);
+void NeoNdisSetNetBufferListsStatus(NET_BUFFER_LIST *nbl, UINT status);
BOOL NeoLoadRegistory();
void NeoInitControlDevice();
void NeoFreeControlDevice();
diff --git a/src/Neo6/Neo6.c b/src/Neo6/Neo6.c
index 69720858..8468e7ca 100644
--- a/src/Neo6/Neo6.c
+++ b/src/Neo6/Neo6.c
@@ -213,6 +213,12 @@ void NeoWrite(void *buf)
return;
}
+ if (ctx->Paused)
+ {
+ // Paused
+ return;
+ }
+
if (ctx->Opened == FALSE)
{
// Not connected
@@ -424,10 +430,14 @@ void NeoInitPacketQueue()
}
// Delete all the packets from the packet queue
-void NeoClearPacketQueue()
+void NeoClearPacketQueue(bool no_lock)
{
// Release the memory of the packet queue
- NeoLock(ctx->PacketQueueLock);
+ if (no_lock == false)
+ {
+ NeoLock(ctx->PacketQueueLock);
+ }
+ if (true)
{
NEO_QUEUE *q = ctx->PacketQueue;
NEO_QUEUE *qn;
@@ -442,14 +452,17 @@ void NeoClearPacketQueue()
ctx->Tail = NULL;
ctx->NumPacketQueue = 0;
}
- NeoUnlock(ctx->PacketQueueLock);
+ if (no_lock == false)
+ {
+ NeoUnlock(ctx->PacketQueueLock);
+ }
}
// Release the packet queue
void NeoFreePacketQueue()
{
// Delete all packets
- NeoClearPacketQueue();
+ NeoClearPacketQueue(false);
// Delete the lock
NeoFreeLock(ctx->PacketQueueLock);
diff --git a/src/Neo6/Neo6.h b/src/Neo6/Neo6.h
index dee4956e..8a5b3b6b 100644
--- a/src/Neo6/Neo6.h
+++ b/src/Neo6/Neo6.h
@@ -124,7 +124,7 @@
#define NDIS_NEO_EVENT_NAME_WIN32 "Global\\NEO_EVENT_NEOADAPTER_%s"
// Constant
-#define NEO_MAX_PACKET_SIZE 1560
+#define NEO_MAX_PACKET_SIZE 1600
#define NEO_MAX_PACKET_SIZE_ANNOUNCE 1514
#define NEO_MIN_PACKET_SIZE 14
#define NEO_PACKET_HEADER_SIZE 14
@@ -268,10 +268,12 @@ typedef struct _PACKET_BUFFER
typedef struct _NEO_CTX
{
NEO_EVENT *Event; // Packet reception notification event
- BOOL Opened; // Flag of whether opened
- BOOL Inited; // Initialization flag
- BOOL Initing; // Starting-up flag
+ volatile BOOL Opened; // Flag of whether opened
+ volatile BOOL Paused; // Flag of whether paused
+ volatile BOOL Inited; // Initialization flag
+ volatile BOOL Initing; // Starting-up flag
volatile BOOL Halting; // Stopping flag
+ volatile UINT NumCurrentDispatch; // Number of current dispatch requests
BYTE MacAddress[6]; // MAC address
BYTE padding[2]; // padding
NEO_QUEUE *PacketQueue; // Transmit packet queue
@@ -308,7 +310,7 @@ BOOL NeoInit();
void NeoShutdown();
void NeoInitPacketQueue();
void NeoFreePacketQueue();
-void NeoClearPacketQueue();
+void NeoClearPacketQueue(bool no_lock);
void NeoLockPacketQueue();
void NeoUnlockPacketQueue();
NEO_QUEUE *NeoGetNextQueue();
diff --git a/src/Neo6/Neo6.vcproj b/src/Neo6/Neo6.vcproj
index b828ed30..a6703799 100644
--- a/src/Neo6/Neo6.vcproj
+++ b/src/Neo6/Neo6.vcproj
@@ -21,7 +21,7 @@
<Configurations>
<Configuration
Name="Release|Win32"
- OutputDirectory="$(SolutionDir)bin"
+ OutputDirectory="$(SolutionDir)BuiltDriverPackages\Neo6\x86"
IntermediateDirectory="$(PlatformName)_$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="2"
@@ -72,7 +72,7 @@
/>
<Tool
Name="VCPreLinkEventTool"
- CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:GenerateVersionResource &quot;$(TargetPath)&quot; /OUT:&quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;"
+ CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:GenerateVersionResource &quot;$(TargetPath)&quot; /OUT:&quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot; /PRODUCT:&quot;SoftEther VPN&quot;"
/>
<Tool
Name="VCLinkerTool"
@@ -80,7 +80,7 @@
LinkLibraryDependencies="false"
AdditionalOptions="/driver /subsystem:native,5.00 /FULLBUILD /align:0x80 /osversion:5.00 /STACK:0x40000,0x1000 /MERGE:_PAGE=PAGE /MERGE:_TEXT=.text /NODEFAULTLIB /stub:C:\WINDDK\7600.16385.0\lib\win7\stub512.com"
AdditionalDependencies="wdm.lib ndis.lib ntoskrnl.lib fwpkclnt.lib &quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;"
- OutputFile="$(OutDir)\hamcore\not_signed\vpn_driver6.sys"
+ OutputFile="$(OutDir)\Neo6_x86.sys"
LinkIncremental="1"
AdditionalLibraryDirectories="C:\WINDDK\7600.16385.0\lib\win7\i386"
GenerateManifest="false"
@@ -121,12 +121,12 @@
/>
<Tool
Name="VCPostBuildEventTool"
- CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes&#x0D;&#x0A;$(SolutionDir)bin\BuildUtil.exe /CMD:GenerateWin8InfFiles x86&#x0D;&#x0A;"
+ CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes&#x0D;&#x0A;"
/>
</Configuration>
<Configuration
Name="Release|x64"
- OutputDirectory="$(SolutionDir)bin"
+ OutputDirectory="$(SolutionDir)BuiltDriverPackages\Neo6\x64"
IntermediateDirectory="$(PlatformName)_$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="2"
@@ -178,7 +178,7 @@
/>
<Tool
Name="VCPreLinkEventTool"
- CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:GenerateVersionResource &quot;$(TargetPath)&quot; /OUT:&quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;"
+ CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:GenerateVersionResource &quot;$(TargetPath)&quot; /OUT:&quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot; /PRODUCT:&quot;SoftEther VPN&quot;"
/>
<Tool
Name="VCLinkerTool"
@@ -186,7 +186,7 @@
LinkLibraryDependencies="false"
AdditionalOptions="/driver /subsystem:native /FULLBUILD /align:0x80 /osversion:5.00 /STACK:0x40000,0x1000 /MERGE:_PAGE=PAGE /MERGE:_TEXT=.text /NODEFAULTLIB /stub:C:\WINDDK\7600.16385.0\lib\win7\stub512.com"
AdditionalDependencies="wdm.lib ndis.lib wdmsec.lib ntoskrnl.lib fwpkclnt.lib &quot;$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res&quot;"
- OutputFile="$(OutDir)\hamcore\not_signed\vpn_driver6_x64.sys"
+ OutputFile="$(OutDir)\Neo6_x64.sys"
LinkIncremental="1"
AdditionalLibraryDirectories="C:\WINDDK\7600.16385.0\lib\win7\amd64"
GenerateManifest="false"
@@ -227,7 +227,7 @@
/>
<Tool
Name="VCPostBuildEventTool"
- CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes&#x0D;&#x0A;$(SolutionDir)bin\BuildUtil.exe /CMD:GenerateWin8InfFiles x64&#x0D;&#x0A;"
+ CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode &quot;$(TargetPath)&quot; /COMMENT:&quot;VPN Software&quot; /KERNEL:yes&#x0D;&#x0A;"
/>
</Configuration>
</Configurations>