Кто не будь пробывал работать с DSP из WindowsXP через порты I/O

Тема в разделе "WASM.AUDIO", создана пользователем ABC, 27 авг 2005.

  1. ABC

    ABC New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    92
    Вот замучался пробываю инициализировать порт

    SoundBlaster но все время мне возвращает 0 или $FF

    но не когда $AA :dntknw: Пробывал тоже самое в MS-DOS

    там все идет





    Может XP защиту поставил?
     
  2. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Чудес не быват. Мне кажется, что это просто дрова карточки к ней пробуют обращаться.

    Чтобы сказать что-то точнее, надо код поглядеть.
     
  3. ABC

    ABC New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    92
    CONST BasePort = $220;





    Function ResetDSP : Boolean;

    Begin

    OutPort(BasePort+$06,1);

    Sleep (1);

    OutPort(BasePort+$06,0);

    Sleep (1);

    If (InPort(BasePort+$0E) and $80 = $80) and

    (InPort(BasePort+$0A) = $AA) then

    ResetDSP := True

    Else

    ResetDSP := False

    End;
     
  4. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Компилишь на Turbo Pascal в DOS приложение чтоли? Тогда нечего ожидать, что винда пустит тебя к портам ввода-вывода.

    Тебе надо компилить в 32 битное приложение, и либо открывать доступ к портам из юзермода, либо делать драйвер.

    Рекомендую делать драйвер.
     
  5. ABC

    ABC New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    92
    Ms Rem

    Драйвер у меня Giveio

    Работает отлично! Но с портами звуковой не хочет

    вот теперь я думаю это или Драйвер или Система



    А так, запускаю в MS-DOS все работает даже

    звук воспройзводит и True возвращат а винде не хочет :dntknw:
     
  6. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    ABC



    Giveio и прочие подобные поделки отлично работать не могут. Глюки гарантируются :)
     
  7. ABC

    ABC New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    92
    А какой драйвер тогда взять?

    Все равно все они одно итоже делают или IN/OUT

    или из NTOSKRNL ф-ций точно не помню...
     
  8. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    ABC



    Поэтому все они глючат.





    Свой написать и доступ к портам осуществлять законным путём - из 0-го кольца (по команде из 3-го).
     
  9. Skif

    Skif New Member

    Публикаций:
    0
    Регистрация:
    31 дек 2003
    Сообщения:
    55
    GiveIO правит IOPM, в результате чего ring-3 код получает доступ к портам I/O. Как метко заметил Quantum, giveio и прочие подобные поделки отлично работать не могут. Рекомендуется написать полноценный драйвер. Примеры - см. NT DDK или www.google.com.



    Ха! Почти синхронно ответили :derisive:
     
  10. ABC

    ABC New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    92
    Блин нелюблю писпать драйвера слишком много контроля :dntknw:

    это тебе не Ring3 :dntknw:



    А чё больше не как?



    Ладно попробую эту ф-цию из драйвера...



    ----------->

    Интересно Giveio точно все порты открывает?

    может он именно этот порт не открыл?
     
  11. ABC

    ABC New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    92
    каоке значение IRQL принемает по умолчанию?

    Ведь я же к аппаратным частям собираюсь обращатся :)
     
  12. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    По умолчанию - PASSIVE_LEVEL.

    А IRQL в конкретном участке кода зависит от того, где он исполняется (в обработчике прерывания, DPC и.т.д).

    Короче, вперед читать книгшу по драйверам. Рекомендую "Программирование драйверов Windows" Солдатова, в самый раз книга для начинающих.
     
  13. ABC

    ABC New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    92
    А она у меня есть и в бумажном и в электроном виде :)



    Сколько байт или килобайт может принять

    Irp->AssociatedIrp->SystemBuffer

    ?



    Что-то у меня не правельно передаётся :dntknw:
     
  14. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Код (Text):
    1.  
    2. IRP_MJ_DEVICE_CONTROL :
    3. InBufLength  = pIoStack->Parameters.DeviceIoControl.InputBufferLength;
    4. OutBufLength = pIoStack->Parameters.DeviceIoControl.OutputBufferLength;
    5.  
    6. IRP_MJ_READ :
    7. InBufLength  = pIoStack->Parameters.Read.Length;
    8.  
    9. IRP_MJ_WRITE :
    10. OutBufLength = pIoStack->Parameters.Write.Length;
    11.  
    12.  
     
  15. ABC

    ABC New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    92
    при использование IRP_MJ_WRITE надо обезательно

    создавать в реестре? Ато мне KmdMaanager говорит

    что не найден файл?

    WriteFile(hDevice,Param, SizeOf(TParams), Written, nil);
     
  16. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Создавать в реестре что?
     
  17. ABC

    ABC New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    92
    Ладно я уже все сделал!



    Но внутри драйвера тоже FALSE возвращает :dntknw:(((((



    Что делать?