调用 RasGetEntryProperties 函数出现“检测到一个不正确的结构大小”处理方法
2016-10-18 11:58
344 查看
Delphi 中调用拨号的API函数,总是出现错误“检测到一个不正确的结构大小”。
下面是函数的声明
function RasGetEntryPropertiesW(
lpszPhonebook: PChar;
lpszEntry: PChar;
lpRasEntry: PRASENTRY; //保存参数缓冲区
lpdwEntryInfoSize: LPDWORD; //参数缓冲区大小
lpbDeviceInfo: PBYTE;
lpdwDeviceInfoSize: LPDWORD): DWORD; stdcall;
function RasGetEntryPropertiesW; external rasapi32 name 'RasGetEntryPropertiesW'; //这里是实现
开始以为是缓冲区的结构设置的不正确,调整了很多次,这个缓冲区有很多的版本,这个函数在不断的升级,参数也在不断的增多,后来使用了最完整的版本还是不行。
最后发现问题出在了 stdcall; 上面,最开始没有增加 stdcall;,导致参数传递的顺序错误,自然缓冲区也就无法正确识别。
另外 lpRasEntry 这个缓冲区的大小是5680字节(采用的是unicode编码),如果不是这个数,也会出现“检测到一个不正确的结构大小”,可以将 lpRasEntry 设置为空,lpdwEntryInfoSize 设置为0, lpszEntry 为空,调用的时候lpdwEntryInfoSize会返回需要的缓冲区大小。
下面是函数的声明
function RasGetEntryPropertiesW(
lpszPhonebook: PChar;
lpszEntry: PChar;
lpRasEntry: PRASENTRY; //保存参数缓冲区
lpdwEntryInfoSize: LPDWORD; //参数缓冲区大小
lpbDeviceInfo: PBYTE;
lpdwDeviceInfoSize: LPDWORD): DWORD; stdcall;
function RasGetEntryPropertiesW; external rasapi32 name 'RasGetEntryPropertiesW'; //这里是实现
开始以为是缓冲区的结构设置的不正确,调整了很多次,这个缓冲区有很多的版本,这个函数在不断的升级,参数也在不断的增多,后来使用了最完整的版本还是不行。
最后发现问题出在了 stdcall; 上面,最开始没有增加 stdcall;,导致参数传递的顺序错误,自然缓冲区也就无法正确识别。
另外 lpRasEntry 这个缓冲区的大小是5680字节(采用的是unicode编码),如果不是这个数,也会出现“检测到一个不正确的结构大小”,可以将 lpRasEntry 设置为空,lpdwEntryInfoSize 设置为0, lpszEntry 为空,调用的时候lpdwEntryInfoSize会返回需要的缓冲区大小。
相关文章推荐
- 编写一个与dup2功能相同的函数,要求不调用fcntl函数,并且要有正确的出错处理
- VS 用RasDial结果返回 "检测到一个不正确的结构大小"错误代码632 VS2010 VC6正常,怎解?!
- 编写一个与3.12节中dup2功能相同的函数,要求不调用fcntl函数,并且要有正确的出错处理(APUE)
- 调用多个方法,一个处理函数
- 编写一个文件,读取 src 下面day12包 下面的my.properties 文件,文件内容如下, className=day12.User 结合 IO、反射知识,完成 配置文件中对象的创建和方法调用。并编写方法,列举出 Student 类中所有的属性、
- Java调用内部类成员函数的一个方法
- flex 多个方法使用一个结果处理函数
- .net调用别人的http页面,返回结果,url中有中文的处理,get和post两种方法
- jquery delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数
- 安装DZ时出现“UCenter 的URL地址不正确”错误的解决方案 和首页上部分插入flash图片调用的方法!非网上复制!
- SQL中获取一个长字符串中某个字符串出现次数的简单方法(函数)
- .NET调用Java方法时出现的一个错误及其原因
- 用Delphi7编写代码时出现"dcc70.dll"调用失败的处理方法
- Asp.Net : 捕捉和记录网站中出现的所有未处理错误,抛出详细的页面来源和访问ip,调用的接口方法及异常实例(记事本日志,系统日志及数据库日志)
- 注册并发布一个xmlrpc远程对象(函数、类对象、客户端使用调用(对象.方法)格式)
- flex 多个方法使用一个结果处理函数
- VB调用GetAdaptersInfo 的正确方法
- 程序中和有js函数的网页交互,线程中调用 get_Script 就会错误的解决方法,由于COM的线程安全问题
- 把一个用sql server 2005内置加密方法加密数据的DB从一台电脑备份后,还原到另外一台电脑上,出现的问题的处理办法
- 升级sp3后出现"一个问题阻止windows正确检测此机器许可证"解决方案