1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2024-09-19 10:10:40 +03:00
SoftEtherVPN/src/Cedar/SeLowUser.h
2021-04-05 04:48:25 +02:00

85 lines
2.1 KiB
C

// SoftEther VPN Source Code - Developer Edition Master Branch
// SeLow: SoftEther Lightweight Network Protocol
// SeLowUser.h
// Header for SeLowUser.c
#ifndef SELOWUSER_H
#define SELOWUSER_H
#include "CedarType.h"
#include "Mayaqua/Mayaqua.h"
#include <SeLow/SeLowCommon.h>
//// Macro
#define SL_USER_INSTALL_LOCK_TIMEOUT 60000 // Lock acquisition timeout
#define SL_USER_AUTO_PUSH_TIMER 60000 // Timer to start the installation automatically
//// Type
// SU
struct SU
{
void *hFile; // File handle
SL_ADAPTER_INFO_LIST AdapterInfoList; // Adapter list cache
};
// Adapter
struct SU_ADAPTER
{
char AdapterId[MAX_PATH]; // Adapter ID
char DeviceName[MAX_PATH]; // Device name
void *hFile; // File handle
void *hEvent; // Event handle
bool Halt;
UINT CurrentPacketCount;
UCHAR GetBuffer[SL_EXCHANGE_BUFFER_SIZE]; // Read buffer
UCHAR PutBuffer[SL_EXCHANGE_BUFFER_SIZE]; // Write buffer
};
// Adapter list items
struct SU_ADAPTER_LIST
{
SL_ADAPTER_INFO Info; // Adapter information
char Guid[128]; // GUID
char Name[MAX_SIZE]; // Name
char SortKey[MAX_SIZE]; // Sort key
};
//// Function prototype
SU *SuInit();
SU *SuInitEx(UINT wait_for_bind_complete_tick);
void SuFree(SU *u);
TOKEN_LIST *SuEnumAdapters(SU *u);
SU_ADAPTER *SuOpenAdapter(SU *u, char *adapter_id);
void SuCloseAdapter(SU_ADAPTER *a);
void SuCloseAdapterHandleInner(SU_ADAPTER *a);
bool SuGetPacketsFromDriver(SU_ADAPTER *a);
bool SuGetNextPacket(SU_ADAPTER *a, void **buf, UINT *size);
bool SuPutPacketsToDriver(SU_ADAPTER *a);
bool SuPutPacket(SU_ADAPTER *a, void *buf, UINT size);
SU_ADAPTER_LIST *SuAdapterInfoToAdapterList(SL_ADAPTER_INFO *info);
LIST *SuGetAdapterList(SU *u);
void SuFreeAdapterList(LIST *o);
int SuCmpAdapterList(void *p1, void *p2);
bool SuInstallDriver(bool force);
bool SuInstallDriverInner(bool force);
bool SuIsSupportedOs(bool on_install);
bool SuCopySysFile(wchar_t *src, wchar_t *dst);
void SuDeleteGarbageInfs();
void SuDeleteGarbageInfsInner();
bool SuLoadDriversHive();
bool SuUnloadDriversHive();
#endif // SELOWUSER_H