#include <stdio.h>
#include <windows.h>
#include <ras.h>
#include <raserror.h>
#include <locale.h>
//typedef unsigned int UINT;
#define STRINGLENGTH 1024
void GetRasError(wchar_t *szTitle, wchar_t *szBuf, UINT dwError)
{
DWORD dwRetVal = ERROR_SUCCESS;
dwRetVal = RasGetErrorString( (UINT)dwError, szBuf, STRINGLENGTH );
if ( dwRetVal != ERROR_SUCCESS )
{
wsprintf( szBuf, L"-------------------------------------------", dwError);
wsprintf( szTitle, L"错误");
}
else if ( dwRetVal == ERROR_INVALID_PARAMETER )
{
wsprintf( szBuf, L"ERROR_INVALID_PARAMETER %u", dwError);
}
else
{
wsprintf( szTitle, L"错误 %u", dwError);
}
}
int main()
{
setlocale(LC_ALL, "");
FILE *fp = NULL;
if ((fp=fopen("RASERROR.txt","w+")) == NULL)
{
fwprintf(stderr,L"\nError opening file\n");
return 1;
}
int i;
for(i=RASBASE; i<=956/*RASBASEEND*/; i++)
{
wchar_t szTitle[STRINGLENGTH] = { 0 };
wchar_t szBuf[STRINGLENGTH] = { 0 };
GetRasError((wchar_t *)&szTitle, (wchar_t *)&szBuf, (UINT)i);
fwprintf(fp, L"%i\t%s\n",i,szBuf);
}
fclose(fp);
fp = NULL;
return 0;
}
运行结果:
600 某操作处于挂起状态。
601 检索到一个无效端口句柄。
602 指定的端口已经打开。
603 呼叫方缓冲区太小。
604 指定了错误的信息。
605 -------------------------------------------
606 无法连接指定端口。
607 -------------------------------------------
608 指定了一个不存在的设备。
609 指定了一个不存在的设备类型。
610 指定了一个无效的缓冲区。
611 -------------------------------------------
612 指定了一个没有分配的路由:
613 -------------------------------------------
614 -------------------------------------------
615 找不到指定的端口。
4 个解决方案
#1
没准是因为你Win 7、8是64位的。
#2
测试的WIN7是32位的,WIN8当时让同事帮测,倒没注意这个问题。
#3
以管理员身份运行
以XP兼容模式运行
以XP兼容模式运行
#4
试了,貌似跟这两个选项无关。
#1
没准是因为你Win 7、8是64位的。
#2
测试的WIN7是32位的,WIN8当时让同事帮测,倒没注意这个问题。
#3
以管理员身份运行
以XP兼容模式运行
以XP兼容模式运行
#4
试了,貌似跟这两个选项无关。