*** 作系统和驱动程序是用什么语言编写的?

 *** 作系统和驱动程序是用什么语言编写的?,第1张

请不懂不要随便回答别人,这样误导别人.

WINDOWS,LINUX/

UNIX系统

都是用C语言编写的.

可以说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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7788304.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存