Конференция "Прочее" » Генерация собственного ControlCode - кода.
 
  • Riply © (18.09.08 23:31) [0]
    Здравствуйте !
    Встала задача вызова DeviceIoControl с собственным IoControlCode`ом.
    Подскажите, пожалуйста, есть ли коды (например с таким-то битом) зарезервированные
    для пользователя или как можно их сгенерировать, так чтобы
    исключить совпадение с уже существующими ?
  • Игорь Шевченко © (18.09.08 23:33) [1]
    не понял, какая нафиг разница, совпадают или несовпадают ? DeviceIoControl вроде бродкастом не рассылается
  • Riply © (18.09.08 23:44) [2]
    > [1] Игорь Шевченко ©   (18.09.08 23:33)
    > не понял, какая нафиг разница, совпадают или несовпадают ?
    > DeviceIoControl вроде бродкастом не рассылается

    Дело в том, что я то не знала, что "бродкастом не рассылается". Что нибудь авральное, например.
    Соответственно не исключала возможности, что какая-то команда
    может быть послана моему устройству и без моего ведома :)
  • oxffff © (18.09.08 23:50) [3]

    > Riply ©   (18.09.08 23:44) [2]


    Если не изменяет память, то DeviceIoControl отображается на IRP  IRP_MJ_DEVICE_CONTROL.
  • oxffff © (18.09.08 23:53) [4]
    Точно не изменяет,
    http://msdn.microsoft.com/en-us/library/ms795857.aspx
    Так что обрабатываешь своим драйвером IRP пакет с вышеуказанным кодом и будет всем счастье.
    Хорошие книги

    Соломон, Руссинович
    Свен Шрайбер
    Солдатов
    Ну DDK естественно. Книги у меня в бумажном виде есть. Могу дать.
  • Игорь Шевченко © (19.09.08 00:25) [5]

    > Соответственно не исключала возможности, что какая-то команда
    > может быть послана моему устройству и без моего ведома :
    > )


    Непременно может, только не DeviceIoControl. Оно, устройство, само определяет, кстати, на какие команды ему, устройству, реагировать. Ну и оповещает об этом.
    Их, собственно, командов, не так уж и много:

    IRP_MJ_CREATE
    IRP_MJ_CREATE_NAMED_PIPE
    IRP_MJ_CLOSE                       -
    IRP_MJ_READ                    
    IRP_MJ_WRITE                    
    IRP_MJ_QUERY_INFORMATION        
    IRP_MJ_SET_INFORMATION          
    IRP_MJ_QUERY_EA                
    IRP_MJ_SET_EA                  
    IRP_MJ_FLUSH_BUFFERS            
    IRP_MJ_QUERY_VOLUME_INFORMATION
    IRP_MJ_SET_VOLUME_INFORMATION  
    IRP_MJ_DIRECTORY_CONTROL        
    IRP_MJ_FILE_SYSTEM_CONTROL      
    IRP_MJ_DEVICE_CONTROL          
    IRP_MJ_INTERNAL_DEVICE_CONTROL  
    IRP_MJ_SHUTDOWN                
    IRP_MJ_LOCK_CONTROL            
    IRP_MJ_CLEANUP                  
    IRP_MJ_CREATE_MAILSLOT          
    IRP_MJ_QUERY_SECURITY          
    IRP_MJ_SET_SECURITY            
    IRP_MJ_POWER                    
    IRP_MJ_SYSTEM_CONTROL          
    IRP_MJ_DEVICE_CHANGE            
    IRP_MJ_QUERY_QUOTA              
    IRP_MJ_SET_QUOTA                
    IRP_MJ_PNP
  • Riply © (19.09.08 00:35) [6]
    > [4] oxffff ©   (18.09.08 23:53)
    > Книги у меня в бумажном виде есть. Могу дать.

    Есть они у меня :) Но, все равно спасибо.

    > http://msdn.microsoft.com/en-us/library/ms795857.aspx

    Перешла с этого адреса на http://msdn.microsoft.com/en-us/library/ms795909.aspx
    Там есть табличка.
    Вроде 13 бит оставлен разработчикам. Я правильно поняла ?

    > [5] Игорь Шевченко ©   (19.09.08 00:25)
    > Непременно может, только не DeviceIoControl.
    > Оно, устройство, само определяет, кстати, на какие команды ему, устройству, реагировать.
    > Ну и оповещает об этом.

    Вот я и боялась спутать команды и попробовать обработать системную как свою собственную :)

    > Их, собственно, командов, не так уж и много:

    Согласна. Но с "контрольным битом" как у NTSTATUS было бы гораздо проще, удобнее и надежнее :)
  • VirEx © (19.09.08 06:24) [7]

    >  [5] Игорь Шевченко ©   (19.09.08 00:25)
    > Оно, устройство,
    > само определяет, кстати, на какие команды ему, устройству,
    > реагировать.

    не устройство а драйвер
  • Городской Шаман (19.09.08 06:35) [8]
    Солдатов есть и в электронке, но все таки рекомендую купить
    http://c2p.ru/cpp/v-soldatov-programmirovanie-drajverov-windows.html
 
Конференция "Прочее" » Генерация собственного ControlCode - кода.
Есть новые Нет новых   [134442   +14][b:0][p:0]