阅读:1142回复:6
请高手帮忙分析一下这段初级代码,细致到没行的功能,包括变量的意义
我是菜鸟级别,谢谢帮忙啊
NTSTATUS AddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT pdo) { // AddDevice NTSTATUS status; PDEVICE_OBJECT fdo; status = IoCreateDevice(DriverObject, sizeof(DEVICE_EXTENSION), NULL, FILE_DEVICE_UNKNOWN, 0, FALSE, &fdo); if (!NT_SUCCESS(status)) return status; PDEVICE_EXTENSION pdx = (PDEVICE_EXTENSION) (fdo->DeviceExtension); pdx->DeviceObject = fdo; pdx->usage = 1; // locked until RemoveDevice KeInitializeEvent(&pdx->evRemove, NotificationEvent, FALSE); status = IoRegisterDeviceInterface(pdo, &GUID_HELLOWDM, NULL, &pdx->ifname); if (!NT_SUCCESS(status)) { // unable to register interface IoDeleteDevice(fdo); return status; } // unable to register interface IoSetDeviceInterfaceState(&pdx->ifname, TRUE); pdx->LowerDeviceObject = IoAttachDeviceToDeviceStack(fdo, pdo); fdo->Flags &= ~DO_DEVICE_INITIALIZING; fdo->Flags |= DO_BUFFERED_IO; pdx->power = PowerDeviceD0; // device starts in full power state pdx->idle = PoRegisterDeviceForIdleDetection(pdo, SIMPLE_IDLE_CONSERVATION, SIMPLE_IDLE_PERFORMANCE, PowerDeviceD3); return STATUS_SUCCESS; } |
|
沙发#
发布于:2005-03-03 14:34
多看书吧,这典型代码一般书都有解析 !
|
|
板凳#
发布于:2005-03-03 14:50
多看书吧,这典型代码一般书都有解析 ! 这位老兄说的对,,,一般的WDM驱动开发的书上都有的,, 大体的上: 创建功能设备对象(FDO) 注册设备接口。。 初始化设备性质。 就这些了。。。。 实在不行,你就在MSDN或者DDK上查看那些函数,,看什么功能不就搞定了。。 :P |
|
|
地板#
发布于:2005-03-03 15:19
新手,别见怪!麻烦帮忙推荐几本电子书,谢谢!
|
|
地下室#
发布于:2005-03-03 15:32
新手,别见怪!麻烦帮忙推荐几本电子书,谢谢! 本站帖子中就有一大把,还有的是翻译过的 |
|
|
5楼#
发布于:2005-03-03 15:50
这个问题太难了!
我们对你现在的水平都不了解,没法回答。 好好看书吧:)自助者天助之 |
|
6楼#
发布于:2005-03-03 16:05
新手,别见怪!麻烦帮忙推荐几本电子书,谢谢! walt one的《WDM编程》 本站有下载。。。 |
|
|