WINDOWS,LINUX/
UNIX系统
可以说90%以上的代码都是C语言写成,只有少量的核心代码是用汇编完成的.
这在计算机行业来说,已经是通用的知识.稍微懂一点系统的人都知道.
*** 作系统和驱动程序是用C语言编写的.
首先你得有对应的硬件知识知道这个硬件是怎么工作的
否则 没法写驱动
懂这个之后
准备好相应芯片的技术手册。
根据技术手册,配置对应时钟寄存器
如需要中断,配置中断相关寄存器。完成对应的ISR中断服务程序。
实现对外接口。
用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' undefinedassuming extern returning int
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)