windows驱动相关问题(顶也给分)
看驱动那版人少的可怜,还是这里比较热闹。
我最近半抄了一个nt驱动。头文件
#define FILE_DEVICE_ASUPIO 0x00008040
#define ASUPIO_IOCTL_INDEX 0x840
//define our own private ioctl
#define IOCTL_ASUPIO_MAPPHYSTOLIN CTL_CODE(FILE_DEVICE_ASUPIO, \
ASUPIO_IOCTL_INDEX, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
其中驱动中符号链接名和设备名都为RtlInitUnicodeString(&DeviceNameUnicodeString,L"\\Device\\ASUpBiosIo");和RtlInitUnicodeString(&DeviceLinkUnicodeString,L"\\??\\ASUpBiosIo");我用ddk编译成功生成名字为AsUpIO;
在应用层引用了他的头文件,然后创建服务启动服务代码如下 hService = CreateService(hSCManager,
"AsUpIO",
"AsUpIO",
SERVICE_ALL_ACCESS,
SERVICE_KERNEL_DRIVER,
(IsDemandLoaded == TRUE) ? SERVICE_DEMAND_START : SERVICE_SYSTEM_START,
SERVICE_ERROR_NORMAL,
pszWinIoDriverPath,
NULL,
NULL,
NULL,
NULL,
NULL);
bResult = StartService(hService, 0, NULL) || GetLastError() == ERROR_SERVICE_ALREADY_RUNNING;
的时候返回getlasterror为2很是奇怪。我用mointor加载说service database entry 什么的不对。希望大家给我说说创建驱动创建服务windows做了些什么。比如service database entry我在哪里可以看。在服务管理器中看不到。在注册表中的位置我知道。要原理!!!