我用VC 写了个MFC Appzard的扩展dll,如下:
extern "C" __declspec(dllexport) ULONG GetIp()
{
WSADATA wsaData;
if(WSAStartup(0x0101,&wsaData))
{
printf("WSAStartup failed %s\n",WSAGetLastError());
return 0;
}
ULONG lip = 0;
char szHostName[50]={0};
char ip[50]={0};
gethostname(szHostName,sizeof(szHostName));
LPHOSTENT lpHost = gethostbyname(szHostName);
if(WSANO_DATA == WSAGetLastError())
{
CString szMsg;
szMsg.Format("WSANO_DATA ERROR :%d",WSAGetLastError());
printf("%s",szMsg);
return 0;
}
strcpy(ip,inet_ntoa(*(struct in_addr*)(*lpHost->h_addr_list)));
lip = inet_addr(ip);
printf("ComFun %s,%d",ip,lip);
WSACleanup();
return lip;
}
然后用ddk又写了个驱动程序,是纯C语言写的。想在NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
入口函数中调用GetIp函数,我是这么写的 #pragma comment(lib,"ComFun.lib")
extern "C" __declspec(dllexport) ULONG GetIp();
ULONG g_ip=0; 可是在调用g_ip = GetIp()时候提示错误
1.error C2059: syntax error : 'string' //错误出现在 extern "C" __declspec(dllexport) ULONG GetIp(); 这一行
2.warning C4013: 'GetIp' undefined; assuming extern returning int
extern "C" __declspec(dllexport) ULONG GetIp()
{
WSADATA wsaData;
if(WSAStartup(0x0101,&wsaData))
{
printf("WSAStartup failed %s\n",WSAGetLastError());
return 0;
}
ULONG lip = 0;
char szHostName[50]={0};
char ip[50]={0};
gethostname(szHostName,sizeof(szHostName));
LPHOSTENT lpHost = gethostbyname(szHostName);
if(WSANO_DATA == WSAGetLastError())
{
CString szMsg;
szMsg.Format("WSANO_DATA ERROR :%d",WSAGetLastError());
printf("%s",szMsg);
return 0;
}
strcpy(ip,inet_ntoa(*(struct in_addr*)(*lpHost->h_addr_list)));
lip = inet_addr(ip);
printf("ComFun %s,%d",ip,lip);
WSACleanup();
return lip;
}
然后用ddk又写了个驱动程序,是纯C语言写的。想在NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
入口函数中调用GetIp函数,我是这么写的 #pragma comment(lib,"ComFun.lib")
extern "C" __declspec(dllexport) ULONG GetIp();
ULONG g_ip=0; 可是在调用g_ip = GetIp()时候提示错误
1.error C2059: syntax error : 'string' //错误出现在 extern "C" __declspec(dllexport) ULONG GetIp(); 这一行
2.warning C4013: 'GetIp' undefined; assuming extern returning int
解决方案 »
- C#中关于多线程的问题。。(小弟新手)
- windows 程序设计那本书的 键盘这章的习题小问题
- 利用socket开发基于tcp/ip协议的网络程序时,有必要设置发送超时和读取超时吗?
- 用GetItem咋不能取得图标的索引号?
- ^^^^^^^^^^^^^^^^^价值120亿美金的京沪铁路将由法国人修建^^^^^^不是日本
- 请教:要在网页中做一个控件,请指点
- 相信这里的同志最懂得我这个问题了,请教一下:如何制作带标签(CD-text)的CD?
- 大量实时数据村存在数据库access,如何叫access数据库中总是保留最新三天的纪录?!
- 为何不能关闭进程?
- MFC的数据输入输出问题
- 初学《windows 程序设计》vs2005 下对生成动态链接库如何设置?希望前辈们能给予指点,在此谢谢了
- CListCtrl中插入位图,但怎么只能插入在第一列,我想插入第二列,但还是插在第一列,请高手指教?
要知道 驱动里面使用api都要转换为zw或者nt系列 呵呵
http://topic.csdn.net/u/20110806/21/df2f30e4-25e1-4de0-a849-6957ab48bc79.html?39781