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()
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.