Страница 1 из 1

Drivers

Добавлено: 01 июл 2008, 10:35
Draeden
Учусь писать драйверы. У меня есть простой драйвер реагирующий на несколько сообщений, есть также программа посылающая эти сообщения. Всё работает нормально до тех пор, пока я не пытаюсь выгрузить драйвер с помощью кода:

Код: Выделить всё

BOOL StopDriver(SC_HANDLE  scm, LPCTSTR DriverName)
{
	SC_HANDLE Service =
			OpenService (scm, DriverName, SERVICE_ALL_ACCESS );
	
	SERVICE_STATUS serviceStatus;
	BOOL ret =
	ControlService(Service, SERVICE_CONTROL_STOP, &serviceStatus);

	CloseServiceHandle (Service);

	return ret;
}
в этом случае SoftICE перехватывает #PF, причём код вызвавший это исключение выглядит весьма странно. Вот функция выгрузки двайвера:

Код: Выделить всё

#pragma code_seg("PAGE")

VOID UnloadRoutine(IN PDRIVER_OBJECT pDriverObject)
{
	PDEVICE_OBJECT	pNextDevObj;
	int i;

	#if DBG
	DbgPrint("-Example- In Unload Routine.");
	#endif

	pNextDevObj = pDriverObject->DeviceObject;

	for(i=0; pNextDevObj!=NULL; i++)
	{
		PEXAMPLE_DEVICE_EXTENSION dx =
				(PEXAMPLE_DEVICE_EXTENSION)pNextDevObj->DeviceExtension;

		UNICODE_STRING *pLinkName = & (dx->ustrSymLinkName);

		pNextDevObj = pNextDevObj->NextDevice;

		IoDeleteSymbolicLink(pLinkName);
		IoDeleteDevice( dx->fdo);
	}
}

#pragma code_seg()
Посмотрите в чём ошибка, если не сложно. Для "гуру драйверного дела" вопрос вроде простой, а я тут ничего не могу понять, т.к. пишу такое в первый раз.

Re: Drivers

Добавлено: 02 июл 2008, 15:05
somewhere
А причем тут ассемблер-то, может вам в раздел С++ или WinAPI?

Re: Drivers

Добавлено: 03 июл 2008, 12:45
Draeden
Разобрался с этой проблемой.
Какая книга лучше всего подходит для изучения драйверов ?
Вроде как рекомендуют некоего Оуни а также Марка Руссиновича.
Не могли бы вы сказать, как именно называются их книги ?

Re: Drivers

Добавлено: 03 июл 2008, 13:43
somewhere
IMHO лучшая книга для изучения драйверов - MSDN. А еще лучше хорошо понимать внутреннюю организацию и принципы работы девайсов на аппаратном уровне - это даже лучше книги при наличии мануала :)

Re: Drivers

Добавлено: 03 июл 2008, 15:06
Draeden
MSDN конечно хорошо... Но проблема в том, что я не знаю ничего: мне нужна масса примеров на использования различных функций, и лучше если эта масса примеров будет оформлена в виде бумажной книги.

Насчёт понимания внутреннего устройства... вряд ли бы я спрашивал по какой книге учится если бы знал как устроена Windows...