当前位置: 代码迷 >> PB >> 有没有有关API函数,可以让PB程序创建VPN连接
  详细解决方案

有没有有关API函数,可以让PB程序创建VPN连接

热度:17   发布时间:2016-04-29 07:09:11.0
有没有相关API函数,可以让PB程序创建VPN连接
本帖最后由 assdeng 于 2009-09-27 19:54:18 编辑
VPN服务器已经存在,每个客户端去配置VPN太烦。能不能用PB调用API函数创建VPN连接??

VPN服务器是固定公网IP,用户名密码都已知
------解决方案--------------------
做一个安装包,直接去安装

或者用pb做个模拟器,模拟一下安装VPN的过程

直接用api调用,应该不可行。
------解决方案--------------------
本帖最后由 lzp_lrp 于 2009-09-27 23:11:52 编辑
可以参考

http://topic.csdn.net/u/20080901/11/efafc76e-dfb8-4378-914e-d1de56006eb3.html


以下为第三段源代码

RcvMACHeader=(PMAC_HEADER)IndicateBuffer; 

if(RcvMACHeader->ProtocolType==IP_PROTOCOL){ 

RcvIPHeader=(PIP_HEADER)(IndicateBuffer+MAC_HEADER_LEN); 

switch( QueryAccessList(RcvIPHeader,QUERY_RCV_PACKET,&sndkeyno) 


case PACKET_REFUSE: 

return NDIS_STATUS_SUCCESS; 

case PACKET_CLEAR: 

goto forward; 

case PACKET_MUD: 

PacketSize = Decrypt_reg( 
(PUCHAR)RcvIPHea 
er+IP_HEADER_LEN, 
(USHORT)PacketSi 
e-IP_HEADER_LEN, 
sndkeyno 
); 
PacketSize += IP_HEADER_LEN; 

Old_cksum = RcvIPHeader->HeaderCRC; 
RcvIPHeader->HeaderCRC = 0; 
RcvIPHeader->LengthL = (USHORT)(PacketSize)&0x00ff; 
RcvIPHeader->LengthU = ((USHORT)(PacketSize)&0xff00)>>8; 
New_cksum=In_cksum((PUCHAR)RcvIPHeader,IP_HEADER_LEN); 
RcvIPHeader->HeaderCRC=New_cksum; 
LookaheadBufferSize=PacketSize; 

break; 





forward: 
_asm pop edi 
_asm pop esi 
_asm pop ebx 
_asm leave 
_asm jmp [IPReceiveAddr] 



/*VOID NDIS_API 
NSHIM_RegisterMac( 
OUT PNDIS_STATUS Status, 
OUT PNDIS_HANDLE NdisMacHandle, 
IN NDIS_HANDLE NdisWrapperHandle, 
IN NDIS_HANDLE MacMacContext, 
IN PNDIS_MAC_CHARACTERISTICS MacCharacteristics, 
IN UINT CharacteristicsLength 



WrapperHandle = NdisWrapperHandle; 
MacContext = MacMacContext; 

NdisRegisterMacAddr( 
Status, 
NdisMacHandle, 
NdisWrapperHandle, 
MacMacContext, 
MacCharacteristics, 
CharacteristicsLength 
); 

if(*Status==NDIS_STATUS_SUCCESS){ 

MacHandle = *NdisMacHandle; 



return; 
}*/ 


UINT 
CopyPacketToBuffer( 
IN OUT PUCHAR Buf, // destination 
IN PNDIS_PACKET Packet, // source packet 
IN UINT Offset, // offset in packet 
IN UINT Length // number of bytes to copy 


/*++ 

Routine Description: 

Copies bytes from a packet into a buffer. Used to copy data 
out of a packet during loopback indications. 

Arguments: 

Buf - the destination buffer 
Packet - the source packet 
Offset - the offset in the packet to start copying at 
  相关解决方案