mirror of
https://github.com/SoftEtherVPN/SoftEtherVPN.git
synced 2024-11-23 01:49:53 +03:00
Merge remote-tracking branch 'SoftEtherVPN/master' into rpmspec_update
* SoftEtherVPN/master: v4.19-9599-beta
This commit is contained in:
commit
b72392117b
@ -138,7 +138,7 @@
|
|||||||
#define CEDAR_VER 419
|
#define CEDAR_VER 419
|
||||||
|
|
||||||
// Build Number
|
// Build Number
|
||||||
#define CEDAR_BUILD 9582
|
#define CEDAR_BUILD 9599
|
||||||
|
|
||||||
// Beta number
|
// Beta number
|
||||||
//#define BETA_NUMBER 3
|
//#define BETA_NUMBER 3
|
||||||
@ -159,10 +159,10 @@
|
|||||||
// Specifies the build date
|
// Specifies the build date
|
||||||
#define BUILD_DATE_Y 2015
|
#define BUILD_DATE_Y 2015
|
||||||
#define BUILD_DATE_M 10
|
#define BUILD_DATE_M 10
|
||||||
#define BUILD_DATE_D 6
|
#define BUILD_DATE_D 19
|
||||||
#define BUILD_DATE_HO 14
|
#define BUILD_DATE_HO 20
|
||||||
#define BUILD_DATE_MI 56
|
#define BUILD_DATE_MI 9
|
||||||
#define BUILD_DATE_SE 30
|
#define BUILD_DATE_SE 5
|
||||||
|
|
||||||
// Tolerable time difference
|
// Tolerable time difference
|
||||||
#define ALLOW_TIMESTAMP_DIFF (UINT64)(3 * 24 * 60 * 60 * 1000)
|
#define ALLOW_TIMESTAMP_DIFF (UINT64)(3 * 24 * 60 * 60 * 1000)
|
||||||
|
@ -2392,10 +2392,12 @@ UINT PtTrafficServer(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
|||||||
LIST *o;
|
LIST *o;
|
||||||
UINT ret = ERR_NO_ERROR;
|
UINT ret = ERR_NO_ERROR;
|
||||||
UINT port;
|
UINT port;
|
||||||
|
bool nohup;
|
||||||
TTS *tts;
|
TTS *tts;
|
||||||
PARAM args[] =
|
PARAM args[] =
|
||||||
{
|
{
|
||||||
{"[port]", NULL, NULL, NULL, NULL},
|
{"[port]", NULL, NULL, NULL, NULL},
|
||||||
|
{"NOHUP", NULL, NULL, NULL, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
// Get the parameter list
|
// Get the parameter list
|
||||||
@ -2411,8 +2413,18 @@ UINT PtTrafficServer(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
|||||||
port = TRAFFIC_DEFAULT_PORT;
|
port = TRAFFIC_DEFAULT_PORT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nohup = GetParamYes(o, "nohup");
|
||||||
|
|
||||||
tts = NewTts(port, c, PtTrafficPrintProc);
|
tts = NewTts(port, c, PtTrafficPrintProc);
|
||||||
|
|
||||||
|
if (nohup)
|
||||||
|
{
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
SleepThread(10000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
c->Write(c, _UU("TTS_ENTER_TO_EXIT"));
|
c->Write(c, _UU("TTS_ENTER_TO_EXIT"));
|
||||||
|
|
||||||
Free(c->ReadLine(c, L"", true));
|
Free(c->ReadLine(c, L"", true));
|
||||||
@ -14974,6 +14986,7 @@ UINT PsAccessAddEx(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
|||||||
{"DELAY", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_DELAY"), CmdEvalMinMax, &minmax_delay},
|
{"DELAY", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_DELAY"), CmdEvalMinMax, &minmax_delay},
|
||||||
{"JITTER", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_JITTER"), CmdEvalMinMax, &minmax_jitter},
|
{"JITTER", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_JITTER"), CmdEvalMinMax, &minmax_jitter},
|
||||||
{"LOSS", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_LOSS"), CmdEvalMinMax, &minmax_loss},
|
{"LOSS", CmdPrompt, _UU("CMD_AccessAddEx_Prompt_LOSS"), CmdEvalMinMax, &minmax_loss},
|
||||||
|
{"REDIRECTURL", NULL, NULL, NULL, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
// If virtual HUB is not selected, it's an error
|
// If virtual HUB is not selected, it's an error
|
||||||
@ -15017,6 +15030,7 @@ UINT PsAccessAddEx(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
|||||||
a->Delay = GetParamInt(o, "DELAY");
|
a->Delay = GetParamInt(o, "DELAY");
|
||||||
a->Jitter = GetParamInt(o, "JITTER");
|
a->Jitter = GetParamInt(o, "JITTER");
|
||||||
a->Loss = GetParamInt(o, "LOSS");
|
a->Loss = GetParamInt(o, "LOSS");
|
||||||
|
StrCpy(a->RedirectUrl, sizeof(a->RedirectUrl), GetParamStr(o, "REDIRECTURL"));
|
||||||
|
|
||||||
// RPC call
|
// RPC call
|
||||||
ret = ScAddAccess(ps->Rpc, &t);
|
ret = ScAddAccess(ps->Rpc, &t);
|
||||||
@ -15178,6 +15192,7 @@ UINT PsAccessAddEx6(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
|||||||
{"DELAY", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_DELAY"), CmdEvalMinMax, &minmax_delay},
|
{"DELAY", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_DELAY"), CmdEvalMinMax, &minmax_delay},
|
||||||
{"JITTER", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_JITTER"), CmdEvalMinMax, &minmax_jitter},
|
{"JITTER", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_JITTER"), CmdEvalMinMax, &minmax_jitter},
|
||||||
{"LOSS", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_LOSS"), CmdEvalMinMax, &minmax_loss},
|
{"LOSS", CmdPrompt, _UU("CMD_AccessAddEx6_Prompt_LOSS"), CmdEvalMinMax, &minmax_loss},
|
||||||
|
{"REDIRECTURL", NULL, NULL, NULL, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
// If virtual HUB is not selected, it's an error
|
// If virtual HUB is not selected, it's an error
|
||||||
@ -15233,6 +15248,7 @@ UINT PsAccessAddEx6(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
|
|||||||
a->Delay = GetParamInt(o, "DELAY");
|
a->Delay = GetParamInt(o, "DELAY");
|
||||||
a->Jitter = GetParamInt(o, "JITTER");
|
a->Jitter = GetParamInt(o, "JITTER");
|
||||||
a->Loss = GetParamInt(o, "LOSS");
|
a->Loss = GetParamInt(o, "LOSS");
|
||||||
|
StrCpy(a->RedirectUrl, sizeof(a->RedirectUrl), GetParamStr(o, "REDIRECTURL"));
|
||||||
|
|
||||||
// RPC call
|
// RPC call
|
||||||
ret = ScAddAccess(ps->Rpc, &t);
|
ret = ScAddAccess(ps->Rpc, &t);
|
||||||
|
@ -126,15 +126,57 @@
|
|||||||
#include <Mayaqua/Mayaqua.h>
|
#include <Mayaqua/Mayaqua.h>
|
||||||
#include <Cedar/Cedar.h>
|
#include <Cedar/Cedar.h>
|
||||||
|
|
||||||
|
// Load the drivers hive
|
||||||
|
bool SuLoadDriversHive()
|
||||||
|
{
|
||||||
|
wchar_t config_dir[MAX_PATH];
|
||||||
|
wchar_t filename[MAX_PATH];
|
||||||
|
if (MsIsWindows10() == false)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
MsEnablePrivilege(SE_RESTORE_NAME, true);
|
||||||
|
MsEnablePrivilege(SE_BACKUP_NAME, true);
|
||||||
|
|
||||||
|
CombinePathW(config_dir, sizeof(config_dir), MsGetSystem32DirW(), L"config");
|
||||||
|
CombinePathW(filename, sizeof(filename), config_dir, L"DRIVERS");
|
||||||
|
|
||||||
|
return MsRegLoadHive(REG_LOCAL_MACHINE, L"DRIVERS", filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unload the drivers hive
|
||||||
|
bool SuUnloadDriversHive()
|
||||||
|
{
|
||||||
|
// todo: always failed.
|
||||||
|
if (MsIsWindows10() == false)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return MsRegUnloadHive(REG_LOCAL_MACHINE, L"DRIVERS");
|
||||||
|
}
|
||||||
|
|
||||||
// Delete garbage inf files
|
// Delete garbage inf files
|
||||||
void SuDeleteGarbageInfs()
|
void SuDeleteGarbageInfs()
|
||||||
{
|
{
|
||||||
void *wow;
|
void *wow;
|
||||||
|
bool load_hive = false;
|
||||||
|
Debug("SuDeleteGarbageInfs()\n");
|
||||||
|
|
||||||
wow = MsDisableWow64FileSystemRedirection();
|
wow = MsDisableWow64FileSystemRedirection();
|
||||||
|
|
||||||
|
load_hive = SuLoadDriversHive();
|
||||||
|
Debug("SuLoadDriversHive: %u\n", load_hive);
|
||||||
|
|
||||||
SuDeleteGarbageInfsInner();
|
SuDeleteGarbageInfsInner();
|
||||||
|
|
||||||
|
/*
|
||||||
|
if (load_hive)
|
||||||
|
{
|
||||||
|
Debug("SuUnloadDriversHive: %u\n", SuUnloadDriversHive());
|
||||||
|
}*/
|
||||||
|
|
||||||
MsRestoreWow64FileSystemRedirection(wow);
|
MsRestoreWow64FileSystemRedirection(wow);
|
||||||
}
|
}
|
||||||
void SuDeleteGarbageInfsInner()
|
void SuDeleteGarbageInfsInner()
|
||||||
@ -343,7 +385,7 @@ bool SuInstallDriverInner(bool force)
|
|||||||
Debug("InstallNdisProtocolDriver Ok.\n");
|
Debug("InstallNdisProtocolDriver Ok.\n");
|
||||||
|
|
||||||
// Copy manually because there are cases where .sys file is not copied successfully for some reason
|
// Copy manually because there are cases where .sys file is not copied successfully for some reason
|
||||||
FileCopyW(src_sys, sys_fullpath);
|
Debug("SuCopySysFile from %S to %s: ret = %u\n", src_sys, sys_fullpath, SuCopySysFile(src_sys, sys_fullpath));
|
||||||
|
|
||||||
ret = true;
|
ret = true;
|
||||||
|
|
||||||
@ -372,6 +414,64 @@ bool SuInstallDriverInner(bool force)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Copy a sys file
|
||||||
|
bool SuCopySysFile(wchar_t *src, wchar_t *dst)
|
||||||
|
{
|
||||||
|
wchar_t dst_rename[MAX_PATH];
|
||||||
|
UINT i;
|
||||||
|
if (src == NULL || dst == NULL)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (FileCopyW(src, dst))
|
||||||
|
{
|
||||||
|
for (i = 1;i <= 100;i++)
|
||||||
|
{
|
||||||
|
UniFormat(dst_rename, sizeof(dst_rename), L"%s.old%u", dst, i);
|
||||||
|
|
||||||
|
FileDeleteW(dst_rename);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 1;;i++)
|
||||||
|
{
|
||||||
|
UniFormat(dst_rename, sizeof(dst_rename), L"%s.old%u", dst, i);
|
||||||
|
|
||||||
|
if (IsFileExistsW(dst_rename) == false)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i >= 100)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (MoveFileW(dst, dst_rename) == false)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FileCopyW(src, dst))
|
||||||
|
{
|
||||||
|
for (i = 1;i <= 100;i++)
|
||||||
|
{
|
||||||
|
UniFormat(dst_rename, sizeof(dst_rename), L"%s.old%u", dst, i);
|
||||||
|
|
||||||
|
FileDeleteW(dst_rename);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
MoveFileW(dst_rename, dst);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Get whether the current OS is supported by SeLow
|
// Get whether the current OS is supported by SeLow
|
||||||
bool SuIsSupportedOs(bool on_install)
|
bool SuIsSupportedOs(bool on_install)
|
||||||
{
|
{
|
||||||
|
@ -173,9 +173,12 @@ int SuCmpAdaterList(void *p1, void *p2);
|
|||||||
bool SuInstallDriver(bool force);
|
bool SuInstallDriver(bool force);
|
||||||
bool SuInstallDriverInner(bool force);
|
bool SuInstallDriverInner(bool force);
|
||||||
bool SuIsSupportedOs(bool on_install);
|
bool SuIsSupportedOs(bool on_install);
|
||||||
|
bool SuCopySysFile(wchar_t *src, wchar_t *dst);
|
||||||
|
|
||||||
void SuDeleteGarbageInfs();
|
void SuDeleteGarbageInfs();
|
||||||
void SuDeleteGarbageInfsInner();
|
void SuDeleteGarbageInfsInner();
|
||||||
|
bool SuLoadDriversHive();
|
||||||
|
bool SuUnloadDriversHive();
|
||||||
|
|
||||||
#endif // SELOWUSER_H
|
#endif // SELOWUSER_H
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
BUILD_NUMBER 9582
|
BUILD_NUMBER 9599
|
||||||
VERSION 419
|
VERSION 419
|
||||||
BUILD_NAME beta
|
BUILD_NAME beta
|
||||||
BUILD_DATE 20151006_145630
|
BUILD_DATE 20151019_200905
|
||||||
|
@ -12609,6 +12609,14 @@ NT_API *MsLoadNtApiFunctions()
|
|||||||
(BOOL (__stdcall *)(HANDLE,DWORD,LPWSTR,PDWORD))
|
(BOOL (__stdcall *)(HANDLE,DWORD,LPWSTR,PDWORD))
|
||||||
GetProcAddress(nt->hKernel32, "QueryFullProcessImageNameW");
|
GetProcAddress(nt->hKernel32, "QueryFullProcessImageNameW");
|
||||||
|
|
||||||
|
nt->RegLoadKeyW =
|
||||||
|
(LSTATUS (__stdcall *)(HKEY,LPCWSTR,LPCWSTR))
|
||||||
|
GetProcAddress(nt->hAdvapi32, "RegLoadKeyW");
|
||||||
|
|
||||||
|
nt->RegUnLoadKeyW =
|
||||||
|
(LSTATUS (__stdcall *)(HKEY,LPCWSTR))
|
||||||
|
GetProcAddress(nt->hAdvapi32, "RegUnLoadKeyW");
|
||||||
|
|
||||||
if (info.dwMajorVersion >= 5)
|
if (info.dwMajorVersion >= 5)
|
||||||
{
|
{
|
||||||
nt->UpdateDriverForPlugAndPlayDevicesW =
|
nt->UpdateDriverForPlugAndPlayDevicesW =
|
||||||
@ -12957,6 +12965,59 @@ DWORD MsRegAccessMaskFor64BitEx(bool force32bit, bool force64bit)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Load the hive
|
||||||
|
bool MsRegLoadHive(UINT root, wchar_t *keyname, wchar_t *filename)
|
||||||
|
{
|
||||||
|
LONG ret;
|
||||||
|
if (keyname == NULL || filename == NULL)
|
||||||
|
{
|
||||||
|
WHERE;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ms->nt == NULL || ms->nt->RegLoadKeyW == NULL || ms->nt->RegUnLoadKeyW == NULL)
|
||||||
|
{
|
||||||
|
WHERE;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = ms->nt->RegLoadKeyW(MsGetRootKeyFromInt(root), keyname, filename);
|
||||||
|
|
||||||
|
if (ret != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
Debug("RegLoadKeyW: %S %S %u\n", keyname, filename, GetLastError());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
WHERE;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unload the hive
|
||||||
|
bool MsRegUnloadHive(UINT root, wchar_t *keyname)
|
||||||
|
{
|
||||||
|
LONG ret;
|
||||||
|
if (keyname == NULL)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ms->nt == NULL || ms->nt->RegLoadKeyW == NULL || ms->nt->RegUnLoadKeyW == NULL)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = ms->nt->RegUnLoadKeyW(MsGetRootKeyFromInt(root), keyname);
|
||||||
|
|
||||||
|
if (ret != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
Debug("RegUnLoadKeyW: %u\n", GetLastError());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// Delete the value
|
// Delete the value
|
||||||
bool MsRegDeleteValue(UINT root, char *keyname, char *valuename)
|
bool MsRegDeleteValue(UINT root, char *keyname, char *valuename)
|
||||||
{
|
{
|
||||||
|
@ -495,6 +495,8 @@ typedef struct NT_API
|
|||||||
BOOL (WINAPI *AddAccessAllowedAceEx)(PACL, DWORD, DWORD, DWORD, PSID);
|
BOOL (WINAPI *AddAccessAllowedAceEx)(PACL, DWORD, DWORD, DWORD, PSID);
|
||||||
HRESULT (WINAPI *DwmIsCompositionEnabled)(BOOL *);
|
HRESULT (WINAPI *DwmIsCompositionEnabled)(BOOL *);
|
||||||
BOOL (WINAPI *GetComputerNameExW)(COMPUTER_NAME_FORMAT, LPWSTR, LPDWORD);
|
BOOL (WINAPI *GetComputerNameExW)(COMPUTER_NAME_FORMAT, LPWSTR, LPDWORD);
|
||||||
|
LONG (WINAPI *RegLoadKeyW)(HKEY, LPCWSTR, LPCWSTR);
|
||||||
|
LONG (WINAPI *RegUnLoadKeyW)(HKEY, LPCWSTR);
|
||||||
} NT_API;
|
} NT_API;
|
||||||
|
|
||||||
typedef struct MS_EVENTLOG
|
typedef struct MS_EVENTLOG
|
||||||
@ -725,6 +727,9 @@ bool MsRegDeleteValue(UINT root, char *keyname, char *valuename);
|
|||||||
bool MsRegDeleteValueEx(UINT root, char *keyname, char *valuename, bool force32bit);
|
bool MsRegDeleteValueEx(UINT root, char *keyname, char *valuename, bool force32bit);
|
||||||
bool MsRegDeleteValueEx2(UINT root, char *keyname, char *valuename, bool force32bit, bool force64bit);
|
bool MsRegDeleteValueEx2(UINT root, char *keyname, char *valuename, bool force32bit, bool force64bit);
|
||||||
|
|
||||||
|
bool MsRegLoadHive(UINT root, wchar_t *keyname, wchar_t *filename);
|
||||||
|
bool MsRegUnloadHive(UINT root, wchar_t *keyname);
|
||||||
|
|
||||||
bool MsIsNt();
|
bool MsIsNt();
|
||||||
bool MsIsAdmin();
|
bool MsIsAdmin();
|
||||||
bool MsEnablePrivilege(char *name, bool enable);
|
bool MsEnablePrivilege(char *name, bool enable);
|
||||||
|
@ -442,25 +442,36 @@ NTSTATUS NeoNdisDispatch(DEVICE_OBJECT *DeviceObject, IRP *Irp)
|
|||||||
if (stack->Parameters.Read.Length == NEO_EXCHANGE_BUFFER_SIZE)
|
if (stack->Parameters.Read.Length == NEO_EXCHANGE_BUFFER_SIZE)
|
||||||
{
|
{
|
||||||
// Address check
|
// Address check
|
||||||
MDL *mdl = IoAllocateMdl(buf, NEO_EXCHANGE_BUFFER_SIZE, false, false, NULL);
|
bool check_ok = true;
|
||||||
|
__try
|
||||||
if (mdl != NULL)
|
|
||||||
{
|
{
|
||||||
MmProbeAndLockPages(mdl, KernelMode, IoWriteAccess);
|
ProbeForWrite(buf, NEO_EXCHANGE_BUFFER_SIZE, 1);
|
||||||
|
}
|
||||||
|
__except (EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
check_ok = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NeoIsKernelAddress(buf) == FALSE)
|
if (check_ok)
|
||||||
{
|
{
|
||||||
|
MDL *mdl = IoAllocateMdl(buf, NEO_EXCHANGE_BUFFER_SIZE, false, false, NULL);
|
||||||
|
|
||||||
|
if (mdl != NULL)
|
||||||
|
{
|
||||||
|
MmProbeAndLockPages(mdl, KernelMode, IoWriteAccess);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Read
|
// Read
|
||||||
NeoRead(buf);
|
NeoRead(buf);
|
||||||
Irp->IoStatus.Information = NEO_EXCHANGE_BUFFER_SIZE;
|
Irp->IoStatus.Information = NEO_EXCHANGE_BUFFER_SIZE;
|
||||||
ok = true;
|
ok = true;
|
||||||
}
|
|
||||||
|
|
||||||
if (mdl != NULL)
|
if (mdl != NULL)
|
||||||
{
|
{
|
||||||
MmUnlockPages(mdl);
|
MmUnlockPages(mdl);
|
||||||
IoFreeMdl(mdl);
|
IoFreeMdl(mdl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -485,25 +496,37 @@ NTSTATUS NeoNdisDispatch(DEVICE_OBJECT *DeviceObject, IRP *Irp)
|
|||||||
if (stack->Parameters.Write.Length == NEO_EXCHANGE_BUFFER_SIZE)
|
if (stack->Parameters.Write.Length == NEO_EXCHANGE_BUFFER_SIZE)
|
||||||
{
|
{
|
||||||
// Address check
|
// Address check
|
||||||
MDL *mdl = IoAllocateMdl(buf, NEO_EXCHANGE_BUFFER_SIZE, false, false, NULL);
|
bool check_ok = true;
|
||||||
|
__try
|
||||||
if (mdl != NULL)
|
|
||||||
{
|
{
|
||||||
MmProbeAndLockPages(mdl, KernelMode, IoReadAccess);
|
ProbeForRead(buf, NEO_EXCHANGE_BUFFER_SIZE, 1);
|
||||||
|
}
|
||||||
|
__except (EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
check_ok = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NeoIsKernelAddress(buf) == FALSE)
|
if (check_ok)
|
||||||
{
|
{
|
||||||
|
MDL *mdl = IoAllocateMdl(buf, NEO_EXCHANGE_BUFFER_SIZE, false, false, NULL);
|
||||||
|
|
||||||
|
if (mdl != NULL)
|
||||||
|
{
|
||||||
|
MmProbeAndLockPages(mdl, KernelMode, IoReadAccess);
|
||||||
|
}
|
||||||
|
|
||||||
|
ProbeForRead(buf, NEO_EXCHANGE_BUFFER_SIZE, 1);
|
||||||
|
|
||||||
// Write
|
// Write
|
||||||
NeoWrite(buf);
|
NeoWrite(buf);
|
||||||
Irp->IoStatus.Information = stack->Parameters.Write.Length;
|
Irp->IoStatus.Information = stack->Parameters.Write.Length;
|
||||||
ok = true;
|
ok = true;
|
||||||
}
|
|
||||||
|
|
||||||
if (mdl != NULL)
|
if (mdl != NULL)
|
||||||
{
|
{
|
||||||
MmUnlockPages(mdl);
|
MmUnlockPages(mdl);
|
||||||
IoFreeMdl(mdl);
|
IoFreeMdl(mdl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1387,20 +1410,6 @@ PACKET_BUFFER *NeoNewPacketBuffer()
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check whether the specified address is kernel memory
|
|
||||||
BOOL NeoIsKernelAddress(void *addr)
|
|
||||||
{
|
|
||||||
#if 0
|
|
||||||
if ((ULONG)addr >= (ULONG)0x80000000)
|
|
||||||
{
|
|
||||||
// Kernel memory
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
#endif // CPU_64
|
|
||||||
// User memory
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reset the event
|
// Reset the event
|
||||||
void NeoReset(NEO_EVENT *event)
|
void NeoReset(NEO_EVENT *event)
|
||||||
{
|
{
|
||||||
|
@ -328,7 +328,6 @@ NEO_EVENT *NeoCreateWin9xEvent(DWORD h);
|
|||||||
void NeoFreeEvent(NEO_EVENT *event);
|
void NeoFreeEvent(NEO_EVENT *event);
|
||||||
void NeoSet(NEO_EVENT *event);
|
void NeoSet(NEO_EVENT *event);
|
||||||
void NeoReset(NEO_EVENT *event);
|
void NeoReset(NEO_EVENT *event);
|
||||||
BOOL NeoIsKernelAddress(void *addr);
|
|
||||||
|
|
||||||
#endif // NEO_DEVICE_DRIVER
|
#endif // NEO_DEVICE_DRIVER
|
||||||
|
|
||||||
|
@ -562,25 +562,36 @@ NTSTATUS NeoNdisDispatch(DEVICE_OBJECT *DeviceObject, IRP *Irp)
|
|||||||
if (stack->Parameters.Read.Length == NEO_EXCHANGE_BUFFER_SIZE)
|
if (stack->Parameters.Read.Length == NEO_EXCHANGE_BUFFER_SIZE)
|
||||||
{
|
{
|
||||||
// Address check
|
// Address check
|
||||||
MDL *mdl = IoAllocateMdl(buf, NEO_EXCHANGE_BUFFER_SIZE, false, false, NULL);
|
bool check_ok = true;
|
||||||
|
__try
|
||||||
if (mdl != NULL)
|
|
||||||
{
|
{
|
||||||
MmProbeAndLockPages(mdl, KernelMode, IoWriteAccess);
|
ProbeForWrite(buf, NEO_EXCHANGE_BUFFER_SIZE, 1);
|
||||||
|
}
|
||||||
|
__except (EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
check_ok = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NeoIsKernelAddress(buf) == FALSE)
|
if (check_ok)
|
||||||
{
|
{
|
||||||
|
// Address check
|
||||||
|
MDL *mdl = IoAllocateMdl(buf, NEO_EXCHANGE_BUFFER_SIZE, false, false, NULL);
|
||||||
|
|
||||||
|
if (mdl != NULL)
|
||||||
|
{
|
||||||
|
MmProbeAndLockPages(mdl, KernelMode, IoWriteAccess);
|
||||||
|
}
|
||||||
|
|
||||||
// Read
|
// Read
|
||||||
NeoRead(buf);
|
NeoRead(buf);
|
||||||
Irp->IoStatus.Information = NEO_EXCHANGE_BUFFER_SIZE;
|
Irp->IoStatus.Information = NEO_EXCHANGE_BUFFER_SIZE;
|
||||||
ok = true;
|
ok = true;
|
||||||
}
|
|
||||||
|
|
||||||
if (mdl != NULL)
|
if (mdl != NULL)
|
||||||
{
|
{
|
||||||
MmUnlockPages(mdl);
|
MmUnlockPages(mdl);
|
||||||
IoFreeMdl(mdl);
|
IoFreeMdl(mdl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -603,25 +614,38 @@ NTSTATUS NeoNdisDispatch(DEVICE_OBJECT *DeviceObject, IRP *Irp)
|
|||||||
if (stack->Parameters.Write.Length == NEO_EXCHANGE_BUFFER_SIZE)
|
if (stack->Parameters.Write.Length == NEO_EXCHANGE_BUFFER_SIZE)
|
||||||
{
|
{
|
||||||
// Address check
|
// Address check
|
||||||
MDL *mdl = IoAllocateMdl(buf, NEO_EXCHANGE_BUFFER_SIZE, false, false, NULL);
|
bool check_ok = true;
|
||||||
|
__try
|
||||||
if (mdl != NULL)
|
|
||||||
{
|
{
|
||||||
MmProbeAndLockPages(mdl, KernelMode, IoReadAccess);
|
ProbeForRead(buf, NEO_EXCHANGE_BUFFER_SIZE, 1);
|
||||||
|
}
|
||||||
|
__except (EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
check_ok = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NeoIsKernelAddress(buf) == FALSE)
|
if (check_ok)
|
||||||
{
|
{
|
||||||
|
// Address check
|
||||||
|
MDL *mdl = IoAllocateMdl(buf, NEO_EXCHANGE_BUFFER_SIZE, false, false, NULL);
|
||||||
|
|
||||||
|
if (mdl != NULL)
|
||||||
|
{
|
||||||
|
MmProbeAndLockPages(mdl, KernelMode, IoReadAccess);
|
||||||
|
}
|
||||||
|
|
||||||
|
ProbeForRead(buf, NEO_EXCHANGE_BUFFER_SIZE, 1);
|
||||||
|
|
||||||
// Write
|
// Write
|
||||||
NeoWrite(buf);
|
NeoWrite(buf);
|
||||||
Irp->IoStatus.Information = stack->Parameters.Write.Length;
|
Irp->IoStatus.Information = stack->Parameters.Write.Length;
|
||||||
ok = true;
|
ok = true;
|
||||||
}
|
|
||||||
|
|
||||||
if (mdl != NULL)
|
if (mdl != NULL)
|
||||||
{
|
{
|
||||||
MmUnlockPages(mdl);
|
MmUnlockPages(mdl);
|
||||||
IoFreeMdl(mdl);
|
IoFreeMdl(mdl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1644,20 +1668,6 @@ PACKET_BUFFER *NeoNewPacketBuffer()
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check whether the specified address is kernel memory
|
|
||||||
BOOL NeoIsKernelAddress(void *addr)
|
|
||||||
{
|
|
||||||
#if 0
|
|
||||||
if ((ULONG)addr >= (ULONG)0x80000000)
|
|
||||||
{
|
|
||||||
// Kernel memory
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
#endif // CPU_64
|
|
||||||
// User memory
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reset the event
|
// Reset the event
|
||||||
void NeoReset(NEO_EVENT *event)
|
void NeoReset(NEO_EVENT *event)
|
||||||
{
|
{
|
||||||
|
@ -337,7 +337,6 @@ NEO_EVENT *NeoCreateWin9xEvent(DWORD h);
|
|||||||
void NeoFreeEvent(NEO_EVENT *event);
|
void NeoFreeEvent(NEO_EVENT *event);
|
||||||
void NeoSet(NEO_EVENT *event);
|
void NeoSet(NEO_EVENT *event);
|
||||||
void NeoReset(NEO_EVENT *event);
|
void NeoReset(NEO_EVENT *event);
|
||||||
BOOL NeoIsKernelAddress(void *addr);
|
|
||||||
|
|
||||||
#endif // NEO_DEVICE_DRIVER
|
#endif // NEO_DEVICE_DRIVER
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@
|
|||||||
IgnoreImportLibrary="true"
|
IgnoreImportLibrary="true"
|
||||||
LinkLibraryDependencies="false"
|
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 /ALIGN:4096"
|
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 /ALIGN:4096"
|
||||||
AdditionalDependencies="wdm.lib ndis.lib ntoskrnl.lib fwpkclnt.lib "$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res""
|
AdditionalDependencies="bufferoverflowK.lib wdm.lib ndis.lib ntoskrnl.lib fwpkclnt.lib "$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res""
|
||||||
OutputFile="$(OutDir)\Neo6_x86_unsigned.sys"
|
OutputFile="$(OutDir)\Neo6_x86_unsigned.sys"
|
||||||
LinkIncremental="1"
|
LinkIncremental="1"
|
||||||
AdditionalLibraryDirectories="C:\WINDDK\7600.16385.0\lib\win7\i386"
|
AdditionalLibraryDirectories="C:\WINDDK\7600.16385.0\lib\win7\i386"
|
||||||
@ -121,7 +121,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_x86.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:0
$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_x86_win10.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:2"
|
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_x86.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:0
$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_x86_win10.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:2
"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
<Configuration
|
<Configuration
|
||||||
@ -227,7 +227,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_x64.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:0
$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_x64_win10.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:2"
|
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_x64.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:0
$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)Neo6_x64_win10.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:2
"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
</Configurations>
|
</Configurations>
|
||||||
|
@ -620,47 +620,61 @@ NTSTATUS SlDeviceReadProc(DEVICE_OBJECT *device_object, IRP *irp)
|
|||||||
|
|
||||||
if (dst != NULL)
|
if (dst != NULL)
|
||||||
{
|
{
|
||||||
MDL *mdl;
|
// Address check
|
||||||
|
bool check_ok = true;
|
||||||
mdl = IoAllocateMdl(dst, irp_stack->Parameters.Read.Length, false, false, NULL);
|
__try
|
||||||
if (mdl != NULL)
|
|
||||||
{
|
{
|
||||||
MmProbeAndLockPages(mdl, KernelMode, IoWriteAccess);
|
ProbeForWrite(irp->UserBuffer, sizeof(SL_ADAPTER_INFO_LIST), 1);
|
||||||
|
}
|
||||||
|
__except (EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
check_ok = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
SlZero(dst, sizeof(SL_ADAPTER_INFO_LIST));
|
if (check_ok)
|
||||||
|
|
||||||
dst->Signature = SL_SIGNATURE;
|
|
||||||
dst->SeLowVersion = SL_VER;
|
|
||||||
dst->EnumCompleted = sl->IsEnumCompleted ? 8 : 1;
|
|
||||||
|
|
||||||
SlLockList(sl->AdapterList);
|
|
||||||
{
|
{
|
||||||
UINT i;
|
MDL *mdl;
|
||||||
|
|
||||||
dst->NumAdapters = MIN(SL_LIST_NUM(sl->AdapterList), SL_MAX_ADAPTER_INFO_LIST_ENTRY);
|
mdl = IoAllocateMdl(dst, irp_stack->Parameters.Read.Length, false, false, NULL);
|
||||||
|
if (mdl != NULL)
|
||||||
for (i = 0;i < dst->NumAdapters;i++)
|
|
||||||
{
|
{
|
||||||
SL_ADAPTER *a = SL_LIST_DATA(sl->AdapterList, i);
|
MmProbeAndLockPages(mdl, KernelMode, IoWriteAccess);
|
||||||
SL_ADAPTER_INFO *d = &dst->Adapters[i];
|
|
||||||
|
|
||||||
d->MtuSize = a->MtuSize;
|
|
||||||
SlCopy(d->MacAddress, a->MacAddress, 6);
|
|
||||||
SlCopy(d->AdapterId, a->AdapterId, sizeof(a->AdapterId));
|
|
||||||
strcpy(d->FriendlyName, a->FriendlyName);
|
|
||||||
d->SupportsVLanHw = a->SupportVLan;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
SlUnlockList(sl->AdapterList);
|
|
||||||
|
|
||||||
ret_size = sizeof(SL_ADAPTER_INFO);
|
SlZero(dst, sizeof(SL_ADAPTER_INFO_LIST));
|
||||||
ret = STATUS_SUCCESS;
|
|
||||||
|
|
||||||
if (mdl != NULL)
|
dst->Signature = SL_SIGNATURE;
|
||||||
{
|
dst->SeLowVersion = SL_VER;
|
||||||
MmUnlockPages(mdl);
|
dst->EnumCompleted = sl->IsEnumCompleted ? 8 : 1;
|
||||||
IoFreeMdl(mdl);
|
|
||||||
|
SlLockList(sl->AdapterList);
|
||||||
|
{
|
||||||
|
UINT i;
|
||||||
|
|
||||||
|
dst->NumAdapters = MIN(SL_LIST_NUM(sl->AdapterList), SL_MAX_ADAPTER_INFO_LIST_ENTRY);
|
||||||
|
|
||||||
|
for (i = 0;i < dst->NumAdapters;i++)
|
||||||
|
{
|
||||||
|
SL_ADAPTER *a = SL_LIST_DATA(sl->AdapterList, i);
|
||||||
|
SL_ADAPTER_INFO *d = &dst->Adapters[i];
|
||||||
|
|
||||||
|
d->MtuSize = a->MtuSize;
|
||||||
|
SlCopy(d->MacAddress, a->MacAddress, 6);
|
||||||
|
SlCopy(d->AdapterId, a->AdapterId, sizeof(a->AdapterId));
|
||||||
|
strcpy(d->FriendlyName, a->FriendlyName);
|
||||||
|
d->SupportsVLanHw = a->SupportVLan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SlUnlockList(sl->AdapterList);
|
||||||
|
|
||||||
|
ret_size = sizeof(SL_ADAPTER_INFO);
|
||||||
|
ret = STATUS_SUCCESS;
|
||||||
|
|
||||||
|
if (mdl != NULL)
|
||||||
|
{
|
||||||
|
MmUnlockPages(mdl);
|
||||||
|
IoFreeMdl(mdl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -680,75 +694,89 @@ NTSTATUS SlDeviceReadProc(DEVICE_OBJECT *device_object, IRP *irp)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UINT num = 0;
|
// Address check
|
||||||
bool left = true;
|
bool check_ok = true;
|
||||||
MDL *mdl;
|
__try
|
||||||
|
|
||||||
mdl = IoAllocateMdl(buf, SL_EXCHANGE_BUFFER_SIZE, false, false, NULL);
|
|
||||||
if (mdl != NULL)
|
|
||||||
{
|
{
|
||||||
MmProbeAndLockPages(mdl, KernelMode, IoWriteAccess);
|
ProbeForWrite(irp->UserBuffer, SL_EXCHANGE_BUFFER_SIZE, 1);
|
||||||
|
}
|
||||||
|
__except (EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
check_ok = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lock the receive queue
|
if (check_ok)
|
||||||
SlLock(f->RecvLock);
|
|
||||||
{
|
{
|
||||||
while (true)
|
UINT num = 0;
|
||||||
|
bool left = true;
|
||||||
|
MDL *mdl;
|
||||||
|
|
||||||
|
mdl = IoAllocateMdl(buf, SL_EXCHANGE_BUFFER_SIZE, false, false, NULL);
|
||||||
|
if (mdl != NULL)
|
||||||
{
|
{
|
||||||
SL_PACKET *q;
|
MmProbeAndLockPages(mdl, KernelMode, IoWriteAccess);
|
||||||
if (num >= SL_MAX_PACKET_EXCHANGE)
|
}
|
||||||
|
|
||||||
|
// Lock the receive queue
|
||||||
|
SlLock(f->RecvLock);
|
||||||
|
{
|
||||||
|
while (true)
|
||||||
{
|
{
|
||||||
if (f->RecvPacketHead == NULL)
|
SL_PACKET *q;
|
||||||
|
if (num >= SL_MAX_PACKET_EXCHANGE)
|
||||||
|
{
|
||||||
|
if (f->RecvPacketHead == NULL)
|
||||||
|
{
|
||||||
|
left = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
q = f->RecvPacketHead;
|
||||||
|
if (q != NULL)
|
||||||
|
{
|
||||||
|
f->RecvPacketHead = f->RecvPacketHead->Next;
|
||||||
|
q->Next = NULL;
|
||||||
|
f->NumRecvPackets--;
|
||||||
|
|
||||||
|
if (f->RecvPacketHead == NULL)
|
||||||
|
{
|
||||||
|
f->RecvPacketTail = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
left = false;
|
left = false;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
SL_SIZE_OF_PACKET(buf, num) = q->Size;
|
||||||
|
SlCopy(SL_ADDR_OF_PACKET(buf, num), q->Data, q->Size);
|
||||||
|
num++;
|
||||||
|
SlFree(q);
|
||||||
}
|
}
|
||||||
q = f->RecvPacketHead;
|
|
||||||
if (q != NULL)
|
|
||||||
{
|
|
||||||
f->RecvPacketHead = f->RecvPacketHead->Next;
|
|
||||||
q->Next = NULL;
|
|
||||||
f->NumRecvPackets--;
|
|
||||||
|
|
||||||
if (f->RecvPacketHead == NULL)
|
|
||||||
{
|
|
||||||
f->RecvPacketTail = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
left = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
SL_SIZE_OF_PACKET(buf, num) = q->Size;
|
|
||||||
SlCopy(SL_ADDR_OF_PACKET(buf, num), q->Data, q->Size);
|
|
||||||
num++;
|
|
||||||
SlFree(q);
|
|
||||||
}
|
}
|
||||||
}
|
SlUnlock(f->RecvLock);
|
||||||
SlUnlock(f->RecvLock);
|
|
||||||
|
|
||||||
if (mdl != NULL)
|
if (mdl != NULL)
|
||||||
{
|
{
|
||||||
MmUnlockPages(mdl);
|
MmUnlockPages(mdl);
|
||||||
IoFreeMdl(mdl);
|
IoFreeMdl(mdl);
|
||||||
}
|
}
|
||||||
|
|
||||||
SL_NUM_PACKET(buf) = num;
|
SL_NUM_PACKET(buf) = num;
|
||||||
SL_LEFT_FLAG(buf) = left;
|
SL_LEFT_FLAG(buf) = left;
|
||||||
|
|
||||||
if (left == false)
|
if (left == false)
|
||||||
{
|
{
|
||||||
SlReset(f->Event);
|
SlReset(f->Event);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SlSet(f->Event);
|
SlSet(f->Event);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = STATUS_SUCCESS;
|
ret = STATUS_SUCCESS;
|
||||||
ret_size = SL_EXCHANGE_BUFFER_SIZE;
|
ret_size = SL_EXCHANGE_BUFFER_SIZE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -783,72 +811,234 @@ NTSTATUS SlDeviceWriteProc(DEVICE_OBJECT *device_object, IRP *irp)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Write the packet
|
// Address check
|
||||||
MDL *mdl;
|
bool check_ok = true;
|
||||||
UINT num = SL_NUM_PACKET(buf);
|
__try
|
||||||
|
|
||||||
mdl = IoAllocateMdl(buf, SL_EXCHANGE_BUFFER_SIZE, false, false, NULL);
|
|
||||||
if (mdl != NULL)
|
|
||||||
{
|
{
|
||||||
MmProbeAndLockPages(mdl, KernelMode, IoReadAccess);
|
ProbeForRead(irp->UserBuffer, SL_EXCHANGE_BUFFER_SIZE, 1);
|
||||||
|
}
|
||||||
|
__except (EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
check_ok = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = true;
|
if (check_ok)
|
||||||
ret_size = SL_EXCHANGE_BUFFER_SIZE;
|
|
||||||
|
|
||||||
if (num >= 1 && num <= SL_MAX_PACKET_EXCHANGE)
|
|
||||||
{
|
{
|
||||||
UINT i, j;
|
// Write the packet
|
||||||
NET_BUFFER_LIST *nbl_head = NULL;
|
MDL *mdl;
|
||||||
NET_BUFFER_LIST *nbl_tail = NULL;
|
UINT num = SL_NUM_PACKET(buf);
|
||||||
UINT num_packets = 0;
|
|
||||||
NDIS_HANDLE adapter_handle = NULL;
|
|
||||||
|
|
||||||
SlLock(f->Adapter->Lock);
|
|
||||||
|
|
||||||
if (f->Adapter->NumPendingSendPackets <= SL_MAX_PACKET_QUEUED)
|
mdl = IoAllocateMdl(buf, SL_EXCHANGE_BUFFER_SIZE, false, false, NULL);
|
||||||
|
if (mdl != NULL)
|
||||||
{
|
{
|
||||||
// Admit to send only if the number of packets being transmitted does not exceed the specified limit
|
MmProbeAndLockPages(mdl, KernelMode, IoReadAccess);
|
||||||
adapter_handle = f->Adapter->AdapterHandle;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (adapter_handle != NULL)
|
ret = true;
|
||||||
|
ret_size = SL_EXCHANGE_BUFFER_SIZE;
|
||||||
|
|
||||||
|
if (num >= 1 && num <= SL_MAX_PACKET_EXCHANGE)
|
||||||
{
|
{
|
||||||
// Lock the file list which opens the same adapter
|
UINT i, j;
|
||||||
SlLockList(dev->FileList);
|
NET_BUFFER_LIST *nbl_head = NULL;
|
||||||
for (j = 0;j < SL_LIST_NUM(dev->FileList);j++)
|
NET_BUFFER_LIST *nbl_tail = NULL;
|
||||||
|
UINT num_packets = 0;
|
||||||
|
NDIS_HANDLE adapter_handle = NULL;
|
||||||
|
|
||||||
|
SlLock(f->Adapter->Lock);
|
||||||
|
|
||||||
|
if (f->Adapter->NumPendingSendPackets <= SL_MAX_PACKET_QUEUED)
|
||||||
{
|
{
|
||||||
SL_FILE *other = SL_LIST_DATA(dev->FileList, j);
|
// Admit to send only if the number of packets being transmitted does not exceed the specified limit
|
||||||
|
adapter_handle = f->Adapter->AdapterHandle;
|
||||||
if (other != f)
|
|
||||||
{
|
|
||||||
// Lock the receive queue of other file lists
|
|
||||||
SlLock(other->RecvLock);
|
|
||||||
|
|
||||||
other->SetEventFlag = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0;i < num;i++)
|
if (adapter_handle != NULL)
|
||||||
{
|
{
|
||||||
UINT packet_size = SL_SIZE_OF_PACKET(buf, i);
|
// Lock the file list which opens the same adapter
|
||||||
UCHAR *packet_buf;
|
SlLockList(dev->FileList);
|
||||||
NET_BUFFER_LIST *nbl = NULL;
|
for (j = 0;j < SL_LIST_NUM(dev->FileList);j++)
|
||||||
bool ok = false;
|
{
|
||||||
bool is_vlan = false;
|
SL_FILE *other = SL_LIST_DATA(dev->FileList, j);
|
||||||
UINT vlan_id = 0;
|
|
||||||
UINT vlan_user_priority = 0, vlan_can_format_id = 0;
|
|
||||||
|
|
||||||
if (packet_size > SL_MAX_PACKET_SIZE)
|
if (other != f)
|
||||||
{
|
{
|
||||||
packet_size = SL_MAX_PACKET_SIZE;
|
// Lock the receive queue of other file lists
|
||||||
}
|
SlLock(other->RecvLock);
|
||||||
else if (packet_size < SL_PACKET_HEADER_SIZE)
|
|
||||||
{
|
other->SetEventFlag = false;
|
||||||
packet_size = SL_PACKET_HEADER_SIZE;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
packet_buf = (UCHAR *)SL_ADDR_OF_PACKET(buf, i);
|
for (i = 0;i < num;i++)
|
||||||
|
{
|
||||||
|
UINT packet_size = SL_SIZE_OF_PACKET(buf, i);
|
||||||
|
UCHAR *packet_buf;
|
||||||
|
NET_BUFFER_LIST *nbl = NULL;
|
||||||
|
bool ok = false;
|
||||||
|
bool is_vlan = false;
|
||||||
|
UINT vlan_id = 0;
|
||||||
|
UINT vlan_user_priority = 0, vlan_can_format_id = 0;
|
||||||
|
|
||||||
|
if (packet_size > SL_MAX_PACKET_SIZE)
|
||||||
|
{
|
||||||
|
packet_size = SL_MAX_PACKET_SIZE;
|
||||||
|
}
|
||||||
|
else if (packet_size < SL_PACKET_HEADER_SIZE)
|
||||||
|
{
|
||||||
|
packet_size = SL_PACKET_HEADER_SIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
packet_buf = (UCHAR *)SL_ADDR_OF_PACKET(buf, i);
|
||||||
|
|
||||||
|
for (j = 0;j < SL_LIST_NUM(dev->FileList);j++)
|
||||||
|
{
|
||||||
|
SL_FILE *other = SL_LIST_DATA(dev->FileList, j);
|
||||||
|
|
||||||
|
if (other != f)
|
||||||
|
{
|
||||||
|
// Insert into the receive queue of the other file lists
|
||||||
|
if (other->NumRecvPackets < SL_MAX_PACKET_QUEUED)
|
||||||
|
{
|
||||||
|
SL_PACKET *q = SlMalloc(sizeof(SL_PACKET));
|
||||||
|
|
||||||
|
SlCopy(q->Data, packet_buf, packet_size);
|
||||||
|
q->Size = packet_size;
|
||||||
|
q->Next = NULL;
|
||||||
|
|
||||||
|
if (other->RecvPacketHead == NULL)
|
||||||
|
{
|
||||||
|
other->RecvPacketHead = q;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
other->RecvPacketTail->Next = q;
|
||||||
|
}
|
||||||
|
|
||||||
|
other->RecvPacketTail = q;
|
||||||
|
|
||||||
|
other->NumRecvPackets++;
|
||||||
|
|
||||||
|
other->SetEventFlag = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allocate a new NET_BUFFER_LIST
|
||||||
|
if (f->NetBufferListPool != NULL)
|
||||||
|
{
|
||||||
|
nbl = NdisAllocateNetBufferList(f->NetBufferListPool, 16, 0);
|
||||||
|
|
||||||
|
if (nbl != NULL)
|
||||||
|
{
|
||||||
|
nbl->SourceHandle = adapter_handle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nbl != NULL)
|
||||||
|
{
|
||||||
|
// Get the NET_BUFFER from the NET_BUFFER_LIST
|
||||||
|
NET_BUFFER *nb = NET_BUFFER_LIST_FIRST_NB(nbl);
|
||||||
|
|
||||||
|
NET_BUFFER_LIST_NEXT_NBL(nbl) = NULL;
|
||||||
|
|
||||||
|
// Determine if the packet is IEEE802.1Q tagged packet
|
||||||
|
if (dev->Adapter->SupportVLan && packet_size >= 18)
|
||||||
|
{
|
||||||
|
if (packet_buf[12] == 0x81 && packet_buf[13] == 0x00)
|
||||||
|
{
|
||||||
|
USHORT tag_us = 0;
|
||||||
|
|
||||||
|
((UCHAR *)(&tag_us))[0] = packet_buf[15];
|
||||||
|
((UCHAR *)(&tag_us))[1] = packet_buf[14];
|
||||||
|
|
||||||
|
vlan_id = tag_us & 0x0FFF;
|
||||||
|
vlan_user_priority = (tag_us >> 13) & 0x07;
|
||||||
|
vlan_can_format_id = (tag_us >> 12) & 0x01;
|
||||||
|
|
||||||
|
if (vlan_id != 0)
|
||||||
|
{
|
||||||
|
is_vlan = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_vlan)
|
||||||
|
{
|
||||||
|
packet_size -= 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nb != NULL && OK(NdisRetreatNetBufferDataStart(nb, packet_size, 0, NULL)))
|
||||||
|
{
|
||||||
|
// Buffer copy
|
||||||
|
UCHAR *dst = NdisGetDataBuffer(nb, packet_size, NULL, 1, 0);
|
||||||
|
|
||||||
|
if (dst != NULL)
|
||||||
|
{
|
||||||
|
if (is_vlan == false)
|
||||||
|
{
|
||||||
|
SlCopy(dst, packet_buf, packet_size);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SlCopy(dst, packet_buf, 12);
|
||||||
|
SlCopy(dst + 12, packet_buf + 16, packet_size + 4 - 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
ok = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NdisAdvanceNetBufferDataStart(nb, packet_size, false, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ok == false)
|
||||||
|
{
|
||||||
|
if (nbl != NULL)
|
||||||
|
{
|
||||||
|
NdisFreeNetBufferList(nbl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (nbl_head == NULL)
|
||||||
|
{
|
||||||
|
nbl_head = nbl;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nbl_tail != NULL)
|
||||||
|
{
|
||||||
|
NET_BUFFER_LIST_NEXT_NBL(nbl_tail) = nbl;
|
||||||
|
}
|
||||||
|
|
||||||
|
nbl_tail = nbl;
|
||||||
|
|
||||||
|
((void **)NET_BUFFER_LIST_CONTEXT_DATA_START(nbl))[0] = f;
|
||||||
|
|
||||||
|
if (is_vlan == false)
|
||||||
|
{
|
||||||
|
NET_BUFFER_LIST_INFO(nbl, Ieee8021QNetBufferListInfo) = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NDIS_NET_BUFFER_LIST_8021Q_INFO qinfo;
|
||||||
|
|
||||||
|
qinfo.Value = &(((void **)NET_BUFFER_LIST_CONTEXT_DATA_START(nbl))[1]);
|
||||||
|
SlZero(qinfo.Value, sizeof(UINT32) * 12);
|
||||||
|
|
||||||
|
qinfo.TagHeader.VlanId = vlan_id;
|
||||||
|
qinfo.TagHeader.UserPriority = vlan_user_priority;
|
||||||
|
qinfo.TagHeader.CanonicalFormatId = vlan_can_format_id;
|
||||||
|
|
||||||
|
NET_BUFFER_LIST_INFO(nbl, Ieee8021QNetBufferListInfo) = qinfo.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
num_packets++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (j = 0;j < SL_LIST_NUM(dev->FileList);j++)
|
for (j = 0;j < SL_LIST_NUM(dev->FileList);j++)
|
||||||
{
|
{
|
||||||
@ -856,190 +1046,43 @@ NTSTATUS SlDeviceWriteProc(DEVICE_OBJECT *device_object, IRP *irp)
|
|||||||
|
|
||||||
if (other != f)
|
if (other != f)
|
||||||
{
|
{
|
||||||
// Insert into the receive queue of the other file lists
|
// Release the receive queue of other file lists
|
||||||
if (other->NumRecvPackets < SL_MAX_PACKET_QUEUED)
|
SlUnlock(other->RecvLock);
|
||||||
|
|
||||||
|
// Set an event
|
||||||
|
if (other->SetEventFlag)
|
||||||
{
|
{
|
||||||
SL_PACKET *q = SlMalloc(sizeof(SL_PACKET));
|
SlSet(other->Event);
|
||||||
|
|
||||||
SlCopy(q->Data, packet_buf, packet_size);
|
|
||||||
q->Size = packet_size;
|
|
||||||
q->Next = NULL;
|
|
||||||
|
|
||||||
if (other->RecvPacketHead == NULL)
|
|
||||||
{
|
|
||||||
other->RecvPacketHead = q;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
other->RecvPacketTail->Next = q;
|
|
||||||
}
|
|
||||||
|
|
||||||
other->RecvPacketTail = q;
|
|
||||||
|
|
||||||
other->NumRecvPackets++;
|
|
||||||
|
|
||||||
other->SetEventFlag = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
SlUnlockList(dev->FileList);
|
||||||
|
|
||||||
// Allocate a new NET_BUFFER_LIST
|
if (nbl_head != NULL)
|
||||||
if (f->NetBufferListPool != NULL)
|
|
||||||
{
|
{
|
||||||
nbl = NdisAllocateNetBufferList(f->NetBufferListPool, 16, 0);
|
InterlockedExchangeAdd(&f->NumSendingPacketets, num_packets);
|
||||||
|
InterlockedExchangeAdd(&f->Adapter->NumPendingSendPackets, num_packets);
|
||||||
|
|
||||||
if (nbl != NULL)
|
SlUnlock(f->Adapter->Lock);
|
||||||
{
|
|
||||||
nbl->SourceHandle = adapter_handle;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nbl != NULL)
|
NdisSendNetBufferLists(adapter_handle, nbl_head, 0, 0);
|
||||||
{
|
|
||||||
// Get the NET_BUFFER from the NET_BUFFER_LIST
|
|
||||||
NET_BUFFER *nb = NET_BUFFER_LIST_FIRST_NB(nbl);
|
|
||||||
|
|
||||||
NET_BUFFER_LIST_NEXT_NBL(nbl) = NULL;
|
|
||||||
|
|
||||||
// Determine if the packet is IEEE802.1Q tagged packet
|
|
||||||
if (dev->Adapter->SupportVLan && packet_size >= 18)
|
|
||||||
{
|
|
||||||
if (packet_buf[12] == 0x81 && packet_buf[13] == 0x00)
|
|
||||||
{
|
|
||||||
USHORT tag_us = 0;
|
|
||||||
|
|
||||||
((UCHAR *)(&tag_us))[0] = packet_buf[15];
|
|
||||||
((UCHAR *)(&tag_us))[1] = packet_buf[14];
|
|
||||||
|
|
||||||
vlan_id = tag_us & 0x0FFF;
|
|
||||||
vlan_user_priority = (tag_us >> 13) & 0x07;
|
|
||||||
vlan_can_format_id = (tag_us >> 12) & 0x01;
|
|
||||||
|
|
||||||
if (vlan_id != 0)
|
|
||||||
{
|
|
||||||
is_vlan = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_vlan)
|
|
||||||
{
|
|
||||||
packet_size -= 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nb != NULL && OK(NdisRetreatNetBufferDataStart(nb, packet_size, 0, NULL)))
|
|
||||||
{
|
|
||||||
// Buffer copy
|
|
||||||
UCHAR *dst = NdisGetDataBuffer(nb, packet_size, NULL, 1, 0);
|
|
||||||
|
|
||||||
if (dst != NULL)
|
|
||||||
{
|
|
||||||
if (is_vlan == false)
|
|
||||||
{
|
|
||||||
SlCopy(dst, packet_buf, packet_size);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SlCopy(dst, packet_buf, 12);
|
|
||||||
SlCopy(dst + 12, packet_buf + 16, packet_size + 4 - 16);
|
|
||||||
}
|
|
||||||
|
|
||||||
ok = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
NdisAdvanceNetBufferDataStart(nb, packet_size, false, NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ok == false)
|
|
||||||
{
|
|
||||||
if (nbl != NULL)
|
|
||||||
{
|
|
||||||
NdisFreeNetBufferList(nbl);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (nbl_head == NULL)
|
SlUnlock(f->Adapter->Lock);
|
||||||
{
|
|
||||||
nbl_head = nbl;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nbl_tail != NULL)
|
|
||||||
{
|
|
||||||
NET_BUFFER_LIST_NEXT_NBL(nbl_tail) = nbl;
|
|
||||||
}
|
|
||||||
|
|
||||||
nbl_tail = nbl;
|
|
||||||
|
|
||||||
((void **)NET_BUFFER_LIST_CONTEXT_DATA_START(nbl))[0] = f;
|
|
||||||
|
|
||||||
if (is_vlan == false)
|
|
||||||
{
|
|
||||||
NET_BUFFER_LIST_INFO(nbl, Ieee8021QNetBufferListInfo) = NULL;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
NDIS_NET_BUFFER_LIST_8021Q_INFO qinfo;
|
|
||||||
|
|
||||||
qinfo.Value = &(((void **)NET_BUFFER_LIST_CONTEXT_DATA_START(nbl))[1]);
|
|
||||||
SlZero(qinfo.Value, sizeof(UINT32) * 12);
|
|
||||||
|
|
||||||
qinfo.TagHeader.VlanId = vlan_id;
|
|
||||||
qinfo.TagHeader.UserPriority = vlan_user_priority;
|
|
||||||
qinfo.TagHeader.CanonicalFormatId = vlan_can_format_id;
|
|
||||||
|
|
||||||
NET_BUFFER_LIST_INFO(nbl, Ieee8021QNetBufferListInfo) = qinfo.Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
num_packets++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (j = 0;j < SL_LIST_NUM(dev->FileList);j++)
|
|
||||||
{
|
|
||||||
SL_FILE *other = SL_LIST_DATA(dev->FileList, j);
|
|
||||||
|
|
||||||
if (other != f)
|
|
||||||
{
|
|
||||||
// Release the receive queue of other file lists
|
|
||||||
SlUnlock(other->RecvLock);
|
|
||||||
|
|
||||||
// Set an event
|
|
||||||
if (other->SetEventFlag)
|
|
||||||
{
|
|
||||||
SlSet(other->Event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
SlUnlockList(dev->FileList);
|
|
||||||
|
|
||||||
if (nbl_head != NULL)
|
|
||||||
{
|
|
||||||
InterlockedExchangeAdd(&f->NumSendingPacketets, num_packets);
|
|
||||||
InterlockedExchangeAdd(&f->Adapter->NumPendingSendPackets, num_packets);
|
|
||||||
|
|
||||||
SlUnlock(f->Adapter->Lock);
|
|
||||||
|
|
||||||
NdisSendNetBufferLists(adapter_handle, nbl_head, 0, 0);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SlUnlock(f->Adapter->Lock);
|
SlUnlock(f->Adapter->Lock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
SlUnlock(f->Adapter->Lock);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mdl != NULL)
|
if (mdl != NULL)
|
||||||
{
|
{
|
||||||
MmUnlockPages(mdl);
|
MmUnlockPages(mdl);
|
||||||
IoFreeMdl(mdl);
|
IoFreeMdl(mdl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1068,17 +1111,31 @@ NTSTATUS SlDeviceIoControlProc(DEVICE_OBJECT *device_object, IRP *irp)
|
|||||||
switch (irp_stack->Parameters.DeviceIoControl.IoControlCode)
|
switch (irp_stack->Parameters.DeviceIoControl.IoControlCode)
|
||||||
{
|
{
|
||||||
case SL_IOCTL_GET_EVENT_NAME:
|
case SL_IOCTL_GET_EVENT_NAME:
|
||||||
if (irp_stack->Parameters.DeviceIoControl.InputBufferLength >= sizeof(SL_IOCTL_EVENT_NAME))
|
if (irp_stack->Parameters.DeviceIoControl.OutputBufferLength >= sizeof(SL_IOCTL_EVENT_NAME))
|
||||||
{
|
{
|
||||||
SL_IOCTL_EVENT_NAME *t = irp->UserBuffer;
|
SL_IOCTL_EVENT_NAME *t = irp->UserBuffer;
|
||||||
|
|
||||||
if (t != NULL)
|
if (t != NULL)
|
||||||
{
|
{
|
||||||
strcpy(t->EventNameWin32, f->EventNameWin32);
|
// Address check
|
||||||
|
bool check_ok = true;
|
||||||
|
__try
|
||||||
|
{
|
||||||
|
ProbeForWrite(t, sizeof(SL_IOCTL_EVENT_NAME), 1);
|
||||||
|
}
|
||||||
|
__except (EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
check_ok = false;
|
||||||
|
}
|
||||||
|
|
||||||
ret_size = sizeof(SL_IOCTL_EVENT_NAME);
|
if (check_ok)
|
||||||
|
{
|
||||||
|
strcpy(t->EventNameWin32, f->EventNameWin32);
|
||||||
|
|
||||||
ret = STATUS_SUCCESS;
|
ret_size = sizeof(SL_IOCTL_EVENT_NAME);
|
||||||
|
|
||||||
|
ret = STATUS_SUCCESS;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -115,7 +115,7 @@
|
|||||||
// Change this number every time functions are added or modified on the driver.
|
// Change this number every time functions are added or modified on the driver.
|
||||||
// As long as this number does not change, installation of SeLow during the update
|
// As long as this number does not change, installation of SeLow during the update
|
||||||
// installation of the VPN Server / VPN Client / VPN Bridge is skipped.
|
// installation of the VPN Server / VPN Client / VPN Bridge is skipped.
|
||||||
#define SL_VER 46
|
#define SL_VER 48
|
||||||
|
|
||||||
// Constants
|
// Constants
|
||||||
#define SL_MAX_PACKET_SIZE 1600
|
#define SL_MAX_PACKET_SIZE 1600
|
||||||
|
@ -172,22 +172,49 @@ NTSTATUS DriverDispatch(DEVICE_OBJECT *device_object, IRP *irp)
|
|||||||
case IRP_MJ_WRITE: // Write
|
case IRP_MJ_WRITE: // Write
|
||||||
if ((stack->Parameters.Write.Length % sizeof(WFP_LOCAL_IP)) == 0)
|
if ((stack->Parameters.Write.Length % sizeof(WFP_LOCAL_IP)) == 0)
|
||||||
{
|
{
|
||||||
UINT size = MIN(WFP_MAX_LOCAL_IP_COUNT * sizeof(WFP_LOCAL_IP), stack->Parameters.Write.Length);
|
// Address check
|
||||||
UCHAR *copied_buf = Malloc(size);
|
bool check_ok = true;
|
||||||
UCHAR *old_buf;
|
__try
|
||||||
Copy(copied_buf, buf, size);
|
|
||||||
|
|
||||||
SpinLock(wfp->LocalIPListLock);
|
|
||||||
{
|
{
|
||||||
old_buf = wfp->LocalIPListData;
|
ProbeForRead(buf, stack->Parameters.Write.Length, 1);
|
||||||
wfp->LocalIPListData = copied_buf;
|
|
||||||
wfp->LocalIPListSize = size;
|
|
||||||
}
|
}
|
||||||
SpinUnlock(wfp->LocalIPListLock);
|
__except (EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
|
||||||
if (old_buf != NULL)
|
|
||||||
{
|
{
|
||||||
Free(old_buf);
|
check_ok = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (check_ok)
|
||||||
|
{
|
||||||
|
MDL *mdl = IoAllocateMdl(buf, stack->Parameters.Write.Length, false, false, NULL);
|
||||||
|
UINT size = MIN(WFP_MAX_LOCAL_IP_COUNT * sizeof(WFP_LOCAL_IP), stack->Parameters.Write.Length);
|
||||||
|
UCHAR *copied_buf = Malloc(size);
|
||||||
|
UCHAR *old_buf;
|
||||||
|
|
||||||
|
if (mdl != NULL)
|
||||||
|
{
|
||||||
|
MmProbeAndLockPages(mdl, KernelMode, IoWriteAccess);
|
||||||
|
}
|
||||||
|
|
||||||
|
Copy(copied_buf, buf, size);
|
||||||
|
|
||||||
|
SpinLock(wfp->LocalIPListLock);
|
||||||
|
{
|
||||||
|
old_buf = wfp->LocalIPListData;
|
||||||
|
wfp->LocalIPListData = copied_buf;
|
||||||
|
wfp->LocalIPListSize = size;
|
||||||
|
}
|
||||||
|
SpinUnlock(wfp->LocalIPListLock);
|
||||||
|
|
||||||
|
if (old_buf != NULL)
|
||||||
|
{
|
||||||
|
Free(old_buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mdl != NULL)
|
||||||
|
{
|
||||||
|
MmUnlockPages(mdl);
|
||||||
|
IoFreeMdl(mdl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
irp->IoStatus.Information = stack->Parameters.Write.Length;
|
irp->IoStatus.Information = stack->Parameters.Write.Length;
|
||||||
|
@ -79,7 +79,7 @@
|
|||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
IgnoreImportLibrary="true"
|
IgnoreImportLibrary="true"
|
||||||
AdditionalOptions="/driver /subsystem:native,6.00 /FULLBUILD /align:0x80 /osversion:6.00 /STACK:0x40000,0x1000 /MERGE:_PAGE=PAGE /MERGE:_TEXT=.text /NODEFAULTLIB /stub:C:\WINDDK\7600.16385.0\lib\wlh\stub512.com /ALIGN:4096"
|
AdditionalOptions="/driver /subsystem:native,6.00 /FULLBUILD /align:0x80 /osversion:6.00 /STACK:0x40000,0x1000 /MERGE:_PAGE=PAGE /MERGE:_TEXT=.text /NODEFAULTLIB /stub:C:\WINDDK\7600.16385.0\lib\wlh\stub512.com /ALIGN:4096"
|
||||||
AdditionalDependencies="wdm.lib ndis.lib ntoskrnl.lib fwpkclnt.lib "$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res""
|
AdditionalDependencies="bufferoverflowK.lib wdm.lib ndis.lib wdmsec.lib ntoskrnl.lib fwpkclnt.lib "$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res""
|
||||||
OutputFile="$(OutDir)\pxwfp_x86_unsigned.sys"
|
OutputFile="$(OutDir)\pxwfp_x86_unsigned.sys"
|
||||||
LinkIncremental="1"
|
LinkIncremental="1"
|
||||||
AdditionalLibraryDirectories="C:\WINDDK\7600.16385.0\lib\wlh\i386"
|
AdditionalLibraryDirectories="C:\WINDDK\7600.16385.0\lib\wlh\i386"
|
||||||
@ -121,7 +121,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)pxwfp_x86.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:0
$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)pxwfp_x86_win10.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:2"
|
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)pxwfp_x86.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:0
$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)pxwfp_x86_win10.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:2
"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
<Configuration
|
<Configuration
|
||||||
@ -183,7 +183,7 @@
|
|||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
IgnoreImportLibrary="true"
|
IgnoreImportLibrary="true"
|
||||||
AdditionalOptions="/driver /subsystem:native /FULLBUILD /align:0x80 /osversion:6.00 /STACK:0x40000,0x1000 /MERGE:_PAGE=PAGE /MERGE:_TEXT=.text /NODEFAULTLIB /stub:C:\WINDDK\7600.16385.0\lib\wlh\stub512.com /ALIGN:4096"
|
AdditionalOptions="/driver /subsystem:native /FULLBUILD /align:0x80 /osversion:6.00 /STACK:0x40000,0x1000 /MERGE:_PAGE=PAGE /MERGE:_TEXT=.text /NODEFAULTLIB /stub:C:\WINDDK\7600.16385.0\lib\wlh\stub512.com /ALIGN:4096"
|
||||||
AdditionalDependencies="wdm.lib ndis.lib wdmsec.lib ntoskrnl.lib fwpkclnt.lib "$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res""
|
AdditionalDependencies="bufferoverflowK.lib wdm.lib ndis.lib wdmsec.lib ntoskrnl.lib fwpkclnt.lib "$(SolutionDir)tmp\VersionResources\$(ProjectName)_$(PlatformName).res""
|
||||||
OutputFile="$(OutDir)\pxwfp_x64_unsigned.sys"
|
OutputFile="$(OutDir)\pxwfp_x64_unsigned.sys"
|
||||||
LinkIncremental="1"
|
LinkIncremental="1"
|
||||||
AdditionalLibraryDirectories="C:\WINDDK\7600.16385.0\lib\wlh\amd64"
|
AdditionalLibraryDirectories="C:\WINDDK\7600.16385.0\lib\wlh\amd64"
|
||||||
@ -225,7 +225,7 @@
|
|||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPostBuildEventTool"
|
Name="VCPostBuildEventTool"
|
||||||
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)pxwfp_x64.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:0
$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)pxwfp_x64_win10.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:2"
|
CommandLine="$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)pxwfp_x64.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:0
$(SolutionDir)bin\BuildUtil.exe /CMD:SignCode "$(TargetPath)" /DEST:"$(TargetDir)pxwfp_x64_win10.sys" /COMMENT:"VPN Software" /KERNEL:yes /CERTID:0 /SHAMODE:2
"
|
||||||
/>
|
/>
|
||||||
</Configuration>
|
</Configuration>
|
||||||
</Configurations>
|
</Configurations>
|
||||||
|
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
;CatalogFile.NT = $CATALOG_FILENAME$
|
;CatalogFile.NT = $CATALOG_FILENAME$
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193640.387
|
; Auto Generated 20151018_201626.032
|
||||||
|
|
||||||
|
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
;CatalogFile.NT = $CATALOG_FILENAME$
|
;CatalogFile.NT = $CATALOG_FILENAME$
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193640.383
|
; Auto Generated 20151018_201626.029
|
||||||
|
|
||||||
|
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
;CatalogFile.NT = $CATALOG_FILENAME$
|
;CatalogFile.NT = $CATALOG_FILENAME$
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193640.393
|
; Auto Generated 20151018_201626.038
|
||||||
|
|
||||||
|
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
;CatalogFile.NT = $CATALOG_FILENAME$
|
;CatalogFile.NT = $CATALOG_FILENAME$
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193640.390
|
; Auto Generated 20151018_201626.035
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN.cat
|
CatalogFile.NT = Neo6_x64_VPN.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193658.928
|
; Auto Generated 20151018_201643.395
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN10.cat
|
CatalogFile.NT = Neo6_x64_VPN10.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193659.933
|
; Auto Generated 20151018_201644.250
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN100.cat
|
CatalogFile.NT = Neo6_x64_VPN100.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193709.982
|
; Auto Generated 20151018_201652.798
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN101.cat
|
CatalogFile.NT = Neo6_x64_VPN101.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193710.086
|
; Auto Generated 20151018_201652.893
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN102.cat
|
CatalogFile.NT = Neo6_x64_VPN102.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193710.189
|
; Auto Generated 20151018_201652.987
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN103.cat
|
CatalogFile.NT = Neo6_x64_VPN103.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193710.292
|
; Auto Generated 20151018_201653.082
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN104.cat
|
CatalogFile.NT = Neo6_x64_VPN104.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193710.395
|
; Auto Generated 20151018_201653.176
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN105.cat
|
CatalogFile.NT = Neo6_x64_VPN105.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193710.534
|
; Auto Generated 20151018_201653.270
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN106.cat
|
CatalogFile.NT = Neo6_x64_VPN106.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193710.656
|
; Auto Generated 20151018_201653.364
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN107.cat
|
CatalogFile.NT = Neo6_x64_VPN107.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193710.977
|
; Auto Generated 20151018_201653.458
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN108.cat
|
CatalogFile.NT = Neo6_x64_VPN108.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193711.080
|
; Auto Generated 20151018_201653.553
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN109.cat
|
CatalogFile.NT = Neo6_x64_VPN109.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193711.184
|
; Auto Generated 20151018_201653.657
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN11.cat
|
CatalogFile.NT = Neo6_x64_VPN11.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193700.037
|
; Auto Generated 20151018_201644.345
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN110.cat
|
CatalogFile.NT = Neo6_x64_VPN110.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193711.290
|
; Auto Generated 20151018_201653.752
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN111.cat
|
CatalogFile.NT = Neo6_x64_VPN111.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193711.394
|
; Auto Generated 20151018_201653.846
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN112.cat
|
CatalogFile.NT = Neo6_x64_VPN112.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193711.497
|
; Auto Generated 20151018_201653.940
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN113.cat
|
CatalogFile.NT = Neo6_x64_VPN113.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193711.620
|
; Auto Generated 20151018_201654.035
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN114.cat
|
CatalogFile.NT = Neo6_x64_VPN114.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193711.742
|
; Auto Generated 20151018_201654.131
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN115.cat
|
CatalogFile.NT = Neo6_x64_VPN115.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193711.900
|
; Auto Generated 20151018_201654.225
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN116.cat
|
CatalogFile.NT = Neo6_x64_VPN116.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193712.004
|
; Auto Generated 20151018_201654.319
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN117.cat
|
CatalogFile.NT = Neo6_x64_VPN117.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193712.107
|
; Auto Generated 20151018_201654.414
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN118.cat
|
CatalogFile.NT = Neo6_x64_VPN118.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193712.209
|
; Auto Generated 20151018_201654.509
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN119.cat
|
CatalogFile.NT = Neo6_x64_VPN119.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193712.314
|
; Auto Generated 20151018_201654.603
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN12.cat
|
CatalogFile.NT = Neo6_x64_VPN12.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193700.140
|
; Auto Generated 20151018_201644.439
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
@ -3,14 +3,14 @@
|
|||||||
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
; Copyright (c) SoftEther Corporation. All Rights Reserved.
|
||||||
; http://www.softether.co.jp/
|
; http://www.softether.co.jp/
|
||||||
;
|
;
|
||||||
; BUILD 9575
|
; BUILD 9594
|
||||||
|
|
||||||
[Version]
|
[Version]
|
||||||
Signature = "$Windows NT$"
|
Signature = "$Windows NT$"
|
||||||
Class = Net
|
Class = Net
|
||||||
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
|
||||||
Provider = %CompanyName%
|
Provider = %CompanyName%
|
||||||
DriverVer = 09/09/2015, 4.19.0.9575
|
DriverVer = 10/17/2015, 4.19.0.9594
|
||||||
CatalogFile.NT = Neo6_x64_VPN120.cat
|
CatalogFile.NT = Neo6_x64_VPN120.cat
|
||||||
|
|
||||||
[Manufacturer]
|
[Manufacturer]
|
||||||
@ -110,5 +110,5 @@ On = "On"
|
|||||||
Off = "Off"
|
Off = "Off"
|
||||||
|
|
||||||
|
|
||||||
; Auto Generated 20150910_193712.418
|
; Auto Generated 20151018_201654.697
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user