驱动开发之一 --- 创建一个简单的设备驱动(续) 【译文】
2012-06-22 12:25
525 查看
驱动开发之一 --- 创建一个简单的设备驱动(续) 【译文】
接上:动态加载和卸载驱动,代码如下:
int _cdecl main(void)
{
HANDLE hSCManager;
HANDLE hService;
SERVICE_STATUS ss;
hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE);
printf("Load Driver\n");
if(hSCManager)
{
printf("Create Service\n");
hService = CreateService(hSCManager, "Example",
"Example Driver",
SERVICE_START | DELETE | SERVICE_STOP,
SERVICE_KERNEL_DRIVER,
SERVICE_DEMAND_START,
SERVICE_ERROR_IGNORE,
"C:\\example.sys",
NULL, NULL, NULL, NULL, NULL);
if(!hService)
{
hService = OpenService(hSCManager, "Example",
SERVICE_START | DELETE | SERVICE_STOP);
}
if(hService)
{
printf("Start Service\n");
StartService(hService, 0, NULL);
printf("Press Enter to close service\r\n");
getchar();
ControlService(hService, SERVICE_CONTROL_STOP, &ss);
DeleteService(hService);
CloseServiceHandle(hService);
}
CloseServiceHandle(hSCManager);
}
return 0;
}
与设备驱动通讯,代码如下:
int _cdecl main(void)
{
HANDLE hFile;
DWORD dwReturn;
hFile = CreateFile("\\\\.\\Example",
GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, 0, NULL);
if(hFile)
{
WriteFile(hFile, "Hello from user mode!",
sizeof("Hello from user mode!"), &dwReturn, NULL);
CloseHandle(hFile);
}
return 0;
}
相关文章推荐
- 驱动开发之一 --- 创建一个简单的设备驱动(续) 【译文】
- 【转帖】驱动开发之一 --- 创建一个简单的设备驱动 【译文】
- 驱动开发之一 --- 创建一个简单的设备驱动 【译文】(精华)
- 嵌入式开发第61日(linux内核模块之设备驱动:怎么写一个简单的驱动)
- 学习笔记:创建一个简单字符设备驱动的过程
- 驱动开发之六 --- 一个简单的显示驱动之一 [译文]
- 驱动开发之六 --- 一个简单的显示驱动之二 【译文】
- 驱动开发之六 --- 一个简单的显示驱动之三 【译文】
- 驱动开发之六 --- 一个简单的显示驱动之四 【译文】
- Windows Embedded 开发之如何创建一个设备驱动(一般性描述)
- 驱动开发之六 --- 一个简单的显示驱动之五 【译文】
- 一个简单的NT驱动之创建设备对象函数(CreateDevice)
- 驱动开发之六 --- 一个简单的显示驱动之六 【译文】
- Linux内核开发之简单字符设备驱动(上)
- 一个驱动创建多个设备的问题
- linux驱动开发之一个真正的设备驱动需要一些什么元素(设备号,操作方法)
- 在 .NET 中开发基于 Chrome 内核的浏览器-创建一个简单浏览器
- Exynos4412 中断驱动开发(三)—— 设备树中中断节点的创建
- Linux内核开发之简单字符设备驱动(下)
- linux设备驱动第三篇:如何写一个简单的字符设备驱动?