[pso] [Tema 3][Windows] Bsod aleator la IoGetDeviceObjectPointer

Vladimir-Andrei Olteanu kooliva at gmail.com
Sat May 8 00:46:39 EEST 2010


Salut!

Modulul meu imi da Bsod uneori cand apelez IoGetDeviceObjectPointer 
(ceea ce ma duce cu gandul la parametri neinitializati).
Programul arata astfel:

struct SSR_DATA
{
     [...]
     PFILE_OBJECT Disk1FileObject;
     PDEVICE_OBJECT Disk1DeviceObject;
     PFILE_OBJECT Disk2FileObject;
     PDEVICE_OBJECT Disk2DeviceObject;
};

[...]

ret = IoCreateDevice(driver, sizeof(struct SSR_DATA) ...)
[...]
data  = (struct SSR_DATA *)device->DeviceExtension;
ret = IoGetDeviceObjectPointer(&disk1UnicodeName, FILE_ALL_ACCESS,
&data->Disk1FileObject, &data->Disk1DeviceObject);
[...]

Primul parametru l-am initializat cu 
RtlInitUnicodeString(&disk1UnicodeName, PHYSICAL_DISK1_DEVICE_NAME) si 
m-am asigurat ca disk1UnicodeName.Buffer nu e NULL.
Am verificat codurile de eroare, si IoCreateDevice se termina cu  
succes, deci variabila data este alocata.

Bsod-ul poate aparea de la oricare dintre cele doua apeluri ale functiei 
IoGetDeviceObjectPointer, sau, uneori, nu apare deloc.

Imi scapa ceva?

Vlad


More information about the pso mailing list