BYTE lpb[684]={0};
DWORD lpbSize=sizeof(lpb);
dwRet = RasGetEntryProperties(NULL,(LPWSTR)szEntry,&rasEntry,&rasEntrySize,lpb,&lpbSize);
if(dwRet == 0 )
{
//如果有附加命令,则清空。
WCHAR* AttachedCmd=(WCHAR*)&lpb[22];
DWORD len =wcslen(AttachedCmd);
if(len)
{
WriteLog(MUC_WRITELOG,"[CCERAS::CERasDial] Attached Command:%ls",AttachedCmd);
memset(AttachedCmd,0,len*2+1);
}
dwRet =RasSetEntryProperties(NULL,(LPWSTR)szEntry,&rasEntry,rasEntrySize,lpb,lpbSize);
if(dwRet)
{
WriteLog(MUC_WRITELOG,"[CCERAS::CERasDial] Clear Attached Command!");
}
}
目前lpb内的数据结构是没有公开,如果需要具体知道参数最大长度需要自己测试,另外提供一段目前网络上别人测试出来的结构
typedef struct
{
UINT16 Reserved1; //0 一般为0x30
UINT16 WaitForCreditcard; //0x02 等待信用卡音频信号时间,单位 ;秒
UINT16 WaitForConnect; //0x04 这时间之内未建立连接,则取消拨号
UINT16 Reserved2; //0x06 一般为0
UINT8 Flowcontrol; //0x08 串口参数:流控制,0 -- 无 0x20 软件 0x10 硬件
UINT8 Unknow1; //0x09 一般为1,暂时还不知它是什么作用
UINT16 Reserved3; //0x0a = 00
UINT16 BaudRate; //0x0c 串口波特率例如 19200
UINT16 Reserved4; //0x0e =0
UINT16 Configbit2; //0x10 // 对应“设备属性”对话框中的“手动拨号(用户提供拨号串)”,如果为0x04 表示选上此项
UINT8 DataBit; //0x12 串口数据位 例如:8位
UINT8 StopBit; //0x13 停止位00- 1位, 02 - 2位
UINT8 ParityBit; //0x14 奇偶校验位00-无,01奇数,02偶数,03标记,04空格
UINT8 Reserved5; //0x15 i don't know it's function
TCHAR AttachedCmd[662]; //0x16 从这开始是附加解调器命令,例如"+CGDCON=1,IP,COMNET"
}RASlpdInfo;
|