Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Стоп-экран на IoGetDMAAdapter в W2k

3.5K
06 марта 2003 года
DMiK
2 / / 06.03.2003
Написал я драйвер (не-PnP), работающий с DMA некоторой ISA-карты. Вызываю IoGetDMAAdapter вот так:

NTSTATUS MyCreate(IN PDEVICE_OBJECT pDevice, IN PIRP pIrp)
{
...
if (FirstFlag) {
NumMapRegs=1;
pDMAAdapter=IoGetDmaAdapter(pDevice, InitDMADescr,NumMapRegs);
...

В W98 всё проходит нормально и драйвер работает. В W2k- стоп экран "Plug&Play error" именно на этом вызове. Дескриптор DMA такой:

DEVICE_DESCRIPTION InitDMADescr={
DEVICE_DESCRIPTION_VERSION, // ULONG Version;
FALSE, FALSE,// Master; ScatterGather;
FALSE, TRUE, // DemandMode; AutoInitialize;
FALSE, FALSE,// Dma32BitAddresses;IgnoreCount;
FALSE, FALSE,// Reserved1; Dma64BitAddresses;
0, InitDMA, // BusNumber;DmaChannel;
Isa, Width16Bits,//InterfaceType; DmaWidth;
Compatible, InitBufLen, 0}; //DmaSpeed;MaximumLength;DmaPort.

Винда данный канал (7) не использует. Пробовал разные настройки дескриптора - не помогает. И ещё была как-то вроде бы такая же проблема с IoConnectInterrupt (но тот драйвер я не дописал).
Читал "Рудаков, Финогенов Язык ассемблера", DDK (естественно) - нигде не нашёл, что так делать нельзя - вроде бы даже можно... Что же тут не так :-?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог