Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: DeviceIoControl - вызывается в зависимости от размера буфера...  (Прочитано 12922 раз)
0 Пользователей и 1 Гость смотрят эту тему.
zloi7777
Постоялец

ru
Offline Offline

« : 26-11-2008 18:10 » 

Господа, вопрос тупой, стыдно даже вопрошать, но заклинило меня  Отлично Отлично Отлично

беру пример из WDK по работе с 1394(WDF)
пишу:
  
Код:
      
        getAddressData->nLength=0xb00;
        dwRet = DeviceIoControl( hDevice,
                                 IOCTL_GET_ADDRESS_DATA,
                                 getAddressData,
                                 sizeof(GET_ADDRESS_DATA)+getAddressData->nLength,
                                 getAddressData,
                                 sizeof(GET_ADDRESS_DATA)+getAddressData->nLength,
                                 &dwBytesRet,
                                 NULL);
выполняется на ура и то чо надо.

пишу:
 
Код:
      
        [u]getAddressData->nLength=0xс00;[/u]        
             dwRet = DeviceIoControl( hDevice,
                                 IOCTL_GET_ADDRESS_DATA,
                                 getAddressData,
                                 sizeof(GET_ADDRESS_DATA)+getAddressData->nLength,
                                 getAddressData,
                                 sizeof(GET_ADDRESS_DATA)+getAddressData->nLength,
                                 &dwBytesRet,
                                 NULL);
вообще невходит в драйвер...      Здесь была моя ладья... Не понял
я непонимая почему??? мож кто обьяснит.

спасибо.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 26-11-2008 20:22 » 

какой пример конкретно? дома DDK не стоит , по приведенному коду - ничего не понятно.
а не входит скорее всего потому, что при обработке драйвера стоит проверка размера входного буфера.

PS и какая сборка DDK? укажите.
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
zloi7777
Постоялец

ru
Offline Offline

« Ответ #2 : 27-11-2008 04:27 » 

C:\WINDDK\6001.18001\src\kmdf\1394\
Записан
sss
Специалист

ru
Offline Offline

« Ответ #3 : 27-11-2008 05:49 » 

vvvvvv, попробуй посмотреть, что там ложится в стек перед вызовом DeviceIoControl.
Записан

while (8==8)
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 27-11-2008 10:36 » 

скиньте код, пожалуйста - я пока 6001 не ставил...
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
zloi7777
Постоялец

ru
Offline Offline

« Ответ #5 : 01-12-2008 19:19 » 

В принципе причину не понял, но выход нашелся, я вызывал IOCTL_GET_ADDRESS_DATA, сразу за REQUEST_ALLOCATE_ADDRESS_RANGE, если выдержать паузу, то все проходит....
так что все работает( можно так сказать....).

Но в след возник следующий вопрос: вызов запроса REQUEST_GET_CONFIGURATION_INFO, не полностью заполняет данные!!!
а в примере они этот момент вообще жестко обошли
Код:
NTSTATUS
t1394_GetConfigurationInformation(
    IN WDFDEVICE   Device,
    IN WDFREQUEST  Request
    )
{
#if 1
    UNREFERENCED_PARAMETER(Device);
    UNREFERENCED_PARAMETER(Request);

    return(STATUS_NOT_IMPLEMENTED);
#else

    NTSTATUS            ntStatus        = STATUS_SUCCESS;
    PDEVICE_EXTENSION   deviceExtension = GetDeviceContext(Device);
    PIRB                pIrb            = NULL;

    ENTER("t1394_GetConfigurationInformation");
....
дальше идет код, который как раз вызывает REQUEST_GET_CONFIGURATION_INFO, #if 1 и.т.д. выкинул, запрос отработался но структура pIrb->u.GetConfigurationInformation осталась незаполненной Не понял Не понял Не понял
в WDM данный пример выполняется на ура.
Чо делать непредставляю!
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 01-12-2008 19:58 » 

- использовать WDM?)) кстати вы в KMDF или в UMDF?
кстати а для какого девайса драйвер пишите? судя по моим изыскам 1394 отмирает потихоньку...(
Микрософт вообще говоря к этому интерфейсу плохо относится... в висте даже поддержка сетей 1394 отсутствует как класс...
конфиг-инфо, в 1394 это структура которая физически находится в устройстве.  если это та конфиг про которую я думаю...
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
zloi7777
Постоялец

ru
Offline Offline

« Ответ #7 : 01-12-2008 20:10 » 

пример из KMDF
устройство свое
в WDMе уже дравина есть, хоте именно WDF попробовать...
а интерфейс хороший мощный, Apple его развивает, во всех компах есть, а это главное! ))
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 03-12-2008 06:41 » 

vvvvvv, что нам Эпл, ему деваться некуда, это их детище если не путаю... единственные распространенные устройства - камеры на mini-dv. и то, на новые, с жестким диском - usb видел ставят... больше честно говоря и не видел особо... если и они отомрут...
простных и понятных контроллеров 1394 я всего пару видел. которые без OCHI и встроенного кодека видео.... да и то оба подозреваю сняты с производства.
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
zloi7777
Постоялец

ru
Offline Offline

« Ответ #9 : 03-12-2008 20:18 » 

1394 его многие применяют вместо rs-232, он полноценный двунаправленный, в отличии от половики USB, плюс длина до 90М, плюс питание по нему могучное в отличии от USB. Так что народ его широко юзает для своих поделок.
Но а из ширпотреба, да, тока камеры, но он под них и заточен специально....
Записан
zloi7777
Постоялец

ru
Offline Offline

« Ответ #10 : 03-12-2008 20:27 » 

Все разобрался я с REQUEST_GET_CONFIGURATION_INFO, тупил!!!)), его два раза вызывать надо было...
пришлось в исходниках driverstudio покопаться ( жаль издох пакет, классный был (( , удобный и понятный...).
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 03-12-2008 21:32 » 

да? а я то думал одни мы такие дикие, что его вместо usb выбрали)
на TEXAS-е 82-м делали...  если не путаю...  года два-три назад выбрали... кстати 90 метров - это только с ретрансмиттерами было. точка-точка только до 5-7 метров вроде было?.
а вы на чем, если не секрет?
« Последнее редактирование: 03-12-2008 21:53 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
zloi7777
Постоялец

ru
Offline Offline

« Ответ #12 : 04-12-2008 04:19 » 

на TSB12. А метраж без ретрансмиттерами метров 18 получается, чтоб на 400 работало ( сам проверял )) ).
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 04-12-2008 09:40 » 

а по скорости что вышло? или вы на скорость не гоняли?
у нас до 20Мбайт/сек поток еще тянет, но встроенной фифошки на 4к не хватает да и своя не очень большая, пакеты по 1к. так вот, из за программной обработки пакетов - бывают паузы по 800мкс-1мс на некоторых машинах.
даже пробовал собственную отсылку ACK-ов писать, чтоб поток DPC снизить - не помогает.
а без этого - там на каждый пакет генерится прерывание, ставится в очередь DPC для пользователя. а по окончании обработки пользователем еще один системный DPC ставиться для отправки ACK-ов..

а 12 микруху посмотрю верчером... там у них вроде как новая 43 вышла из той же серии... правда описания пока не нашел.. ага. под видео заточена.

PS глянул... TSB12LV32-я ничего... на нашу TSB42AA82 чем то похожа, только без физ уровня и с поддержкой изохронного - у нас к сожалению нет. и фифо у нас 4.7кб общее на TX-RX в любом соотношении можно разделить.
а у TSB12LV31 - фифошка совсем маленькая,200 байт... не понял как ей можно пакеты большие формировать... и DMA нет.. без DMA не хотелось... да и два кристалла не хотелось ставить...

PPS а описание у всех одинаково бестолковое) мы ее чудом за месяц оживили) не считая 3 месяцев изучения этого дурного мануала)
« Последнее редактирование: 04-12-2008 22:08 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines