阅读:1189回复:0
在AddDevice出现BSOD了....
小弟主要是想送ACPI Command,由BIOS用ASL Code定义一个PnP Device
然后再去驱动去,由Device Stack把ACPI command送给pdo 但装完我的Driver后,开机就会有BSOD(XP SP2 DDK June 2006)了....Error Code 19-->BAD_POOL_HEADER AddDevice的code如下,请各位大大救救我...,也有试过自订DeviceName不过之前的Driver 移除后,在Obj Manager里还是看得到之前建的Device,第二次执行就会出现名称冲突了... 请各位大大救救我 NTSTATUS status = STATUS_SUCCESS; PDEVICE_OBJECT fdo; PACPI_DEVICE_EXTENSION pdx; UNICODE_STRING DeviceName, DosDeviceName; PAGED_CODE(); KdPrint(("AddDevice Called \r\n")); status = IoCreateDevice(pDriverObject,sizeof(ACPI_DEVICE_EXTENSION),NULL,FILE_DEVICE_UNKNOWN,FILE_DEVICE_SECURE_OPEN,FALSE,&fdo); if(!NT_SUCCESS(status)) { KdPrint(("Create Device Fail ,Status is %x\r\n",status)); return status; } KdPrint(("Create Device Success \r\n")); pdx = (PACPI_DEVICE_EXTENSION) fdo->DeviceExtension; IoInitializeRemoveLock(&pdx->RemoveLock,DEVICE_POOL_TAG,0,0); status = IoRegisterDeviceInterface(pdo,&ACPI_CONTACTOR_GUID,NULL,&pdx->ifname); if(!NT_SUCCESS(status)) { KdPrint(("Register Interface Fail \r\n")); IoDeleteDevice(fdo); return status; } KdPrint(("Register Interface Success \r\n")); IoSetDeviceInterfaceState(&pdx->ifname,TRUE); pdx->DeviceObject = fdo; pdx->LowerDeviceObject = IoAttachDeviceToDeviceStack(fdo,pdo); pdx->pdo = pdo; pdx->devpower = PowerDeviceD0; pdx->syspower = PowerSystemWorking; fdo->Flags |= DO_BUFFERED_IO; fdo->Flags &= (~DO_DEVICE_INITIALIZING); return status; |
|