C Rasdail API中的位屏蔽问题
这个问题是关于Rasdail和pbk文件的。 我正在使用“rassetentryproperties”更新pbk文件,并通过“rasdialdlg”拨号 以下标志决定拨号连接属性的pbk文件inturn responisble的参数。 我将旗帜预设为:C Rasdail API中的位屏蔽问题,c,winapi,ras,dial-up,C,Winapi,Ras,Dial Up,这个问题是关于Rasdail和pbk文件的。 我正在使用“rassetentryproperties”更新pbk文件,并通过“rasdialdlg”拨号 以下标志决定拨号连接属性的pbk文件inturn responisble的参数。 我将旗帜预设为: RasEntry.dwfOptions = 0x00000000; RasEntry.dwfOptions2 = 0x00000000; 尝试执行以下操作以设置Flag1和Flag2 RasEntry.dwfOptions |= (Set Fl
RasEntry.dwfOptions = 0x00000000;
RasEntry.dwfOptions2 = 0x00000000;
尝试执行以下操作以设置Flag1和Flag2
RasEntry.dwfOptions |= (Set Flag1 | Set Flag2)
然而,我的pbk文件条目并没有像上面设置的那样进行实际设置
同样,对于相同的代码,Win7 pbk和win xp pbk是不同的。
我错在哪里
代码示例供参考:
BOOL Create_Phone_Book ( LPTSTR DeviceName ) {
DWORD regError;
TCHAR DeviceName[100];
if ( _tcscpy ( DeviceName, DeviceName ) != NULL ) {
Slog ( TEXT ("Strcpy Success"), APISUCCESS );
} else {
Slog ( TEXT ("Strcpy Failed To copy deviceName to DeviceName"), NOLASTERROR);
return FALSE;
}
RASENTRY RasEntry;
DWORD cb;
RASDIALPARAMS RasDialParams;
memset((LPTSTR)&RasEntry, 0, sizeof(RASENTRY));
RasEntry.dwSize = sizeof(RASENTRY);
cb = sizeof(RASENTRY);
regError = RasGetEntryProperties (NULL, TEXT (""), &RasEntry, &cb, NULL, NULL);
if ( regError == ERROR_SUCCESS ) {
Slog ( TEXT ("RasGetEntryProperties Success"), APISUCCESS );
} else {
RAS_ErrorHandler ( regError );
return FALSE;
}
RasEntry.dwfOptions = 0x00000000;
RasEntry.dwfOptions2 = 0x00000000;
RasEntry.dwfOptions |= ( RASEO_IpHeaderCompression | RASEO_ModemLights |RASEO_SwCompression |
RASEO_ShowDialingProgress | RASEO_NetworkLogon | RASEO_DisableLcpExtensions );
RasEntry.dwfOptions2 |= ( RASEO2_UseGlobalDeviceSettings | RASEO2_Internet );
if ( _tcscpy ( RasEntry.szDeviceType, RASDT_Modem ) != NULL ) {
Slog ( TEXT ("Strcpy Success"), APISUCCESS );
} else {
Slog ( TEXT ("Strcpy Failed copy RASDT_MODEM to RasEntry.szDeviceType"), NOLASTERROR);
return FALSE;
}
if ( _tcscpy ( RasEntry.szDeviceName, DeviceName ) != NULL ) {
Slog ( TEXT ("Strcpy Success"), APISUCCESS );
} else {
Slog ( TEXT ("Strcpy Failed copy DeviceName to RasEntry.szDeviceName"), NOLASTERROR);
return FALSE;
}
regError = RasSetEntryProperties( NULL , Dial_Up_Name, &RasEntry, sizeof(RasEntry),NULL, 0);
if ( regError == ERROR_SUCCESS ) {
Slog ( TEXT ("RasSetEntryProperties Succeeded"), APISUCCESS);
} else {
RAS_ErrorHandler ( regError );
return FALSE;
}
memset((LPTSTR)&RasDialParams, 0, sizeof(RasDialParams));
RasDialParams.dwSize = sizeof(RASDIALPARAMS);
if ( _tcscpy (RasDialParams.szEntryName, Dial_Up_Name ) != NULL ) {
Slog ( TEXT ("Strcpy Success"), APISUCCESS);
} else {
Slog ( TEXT ("Strcpy Failed Copy Dial_Up_Name to RasDialParams.szEntryName"), NOLASTERROR);
return FALSE;
}
if ( _tcscpy (RasDialParams.szUserName, TEXT ("")) != NULL ) {
Slog ( TEXT ("Strcpy Success"), APISUCCESS);
} else {
Slog ( TEXT ("Strcpy Failed Copy "" to RasDialParams.szUserName"), NOLASTERROR);
return FALSE;
}
if ( _tcscpy (RasDialParams.szPassword, TEXT ("")) != NULL ) {
Slog ( TEXT ("Strcpy Success"), APISUCCESS);
} else {
Slog ( TEXT ("Strcpy Failed Copy "" to RasDialParams.szPassword"), NOLASTERROR);
return FALSE;
}
regError = RasSetEntryDialParams ( NULL, &RasDialParams, FALSE);
if ( regError == ERROR_SUCCESS ) {
Slog ( TEXT ("RasSetEntryDialParams Success"), APISUCCESS );
} else {
RAS_ErrorHandler ( regError );
return FALSE;
}
return TRUE;
}
更新1:
通常,我需要创建一个我喜欢的拨号连接。请看附带的屏幕截图
从快照中可以看出,我必须设置和重置许多参数(设置连接时的显示进度,重置-提示UN和PW)。
这两个标志用于通过“或”ing设置和重置我们想要的任何内容
RasEntry.dwfooptionsRasEntry.dwfooptions2 因此,我在代码中所做的是: 重置标志:
RasEntry.dwfOptions = 0x00000000;
RasEntry.dwfOptions2 = 0x00000000;
并设定:
RasEntry.dwfOptions |= ( RASEO_IpHeaderCompression | RASEO_ModemLights
|RASEO_SwCompression | RASEO_ShowDialingProgress |
RASEO_NetworkLogon | RASEO_DisableLcpExtensions );
因此,除上述标志外的其余标志将保持未设置状态
现在的问题是,无论我在上述步骤中设置了什么,实际上都没有在拨号连接中设置。另一方面,如果我在代码中设置了一些参数,那么有些参数甚至没有设置
我该怎么做才能解决我的问题?各位专家好。。。请回答..没有人回答,因为你没有真正提问。代码有效吗?大概不会吧?那么,它是如何失败的呢?你预计会发生什么?到底发生了什么?报告了哪些错误?等等。你现在在这里问了很多问题,你现在应该知道什么是好问题了。@DavidHeffernan谢谢你的宝贵评论。我已经更新了我的问题。