BSOD при выгрузке драйвера через SCM
От: Роланд Бродяга Россия  
Дата: 30.05.08 00:52
Оценка:
Есть легаси-драйвер, есть приложение, котрое его инсталлирует-загружает-выгружает-деинсталлирует.
При выгрузке система стала падать в синюю смерть с ошибкой PAGE_FAULT_IN_NONPAGED_AREA.
Помогите, плиз, решить эту проблему.
пожалуйста используйте таги для выделения кода, см ниже как — модератор

Выгрузку делаю так:
    SC_HANDLE Service = OpenService (scm, DriverName, SERVICE_ALL_ACCESS );
    if (Service == NULL)  // Невозможно выполнить останов драйвера
    {
        DWORD err = GetLastError();
        return FALSE;
    }
    SERVICE_STATUS serviceStatus;
    BOOL ret = ControlService(Service, SERVICE_CONTROL_STOP, &serviceStatus);
    CloseServiceHandle (Service);

Функция DriverUnload:
#pragma code_seg( "PAGE" )
void unload( IN PDRIVER_OBJECT driverObj )
{
    PDEVICE_OBJECT nextDevObj = driverObj->DeviceObject;
    PDeviceExtension devExt = ( PDeviceExtension )nextDevObj->DeviceExtension;
    UNICODE_STRING *symLinkName = &( devExt->symLinkName );

    if( devExt->fdo != NULL )
    {
            IoDeleteSymbolicLink( symLinkName );
        IoDeleteDevice( devExt->fdo );
    }
}
#pragma code_seg()
Re: BSOD при выгрузке драйвера через SCM
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 30.05.08 11:04
Оценка: 1 (1)
Здравствуйте, Роланд Бродяга, Вы писали:

РБ>Есть легаси-драйвер, есть приложение, котрое его инсталлирует-загружает-выгружает-деинсталлирует.

РБ>При выгрузке система стала падать в синюю смерть с ошибкой PAGE_FAULT_IN_NONPAGED_AREA.
РБ>Помогите, плиз, решить эту проблему.
причин может быть миллион — начиная с того что у Вас мог остался outstanding IRP где-то и после того, как драйвер был выгружен, а память за ним успешно почищена — дошло дело до завершения потерянного IRP через его completion routine.

Включите verifier для начала? Подключите WinDbg и посмотрите что там скажут. Заодно и сюда потом выхлоп можно будет предоставить — иначе анализ проблемы будет затруднен
... << RSDN@Home 1.2.0 alpha 4 rev. 1090>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.