IoAttachDeviceToDeviceStack к первому девайсу

Тема в разделе "WASM.NT.KERNEL", создана пользователем katrus, 14 июл 2010.

  1. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    Как известно, IoAttachDeviceToDeviceStack цепляет девайс к последнему attached device. А есть ли цивилизованный (т.е. через API) способ присоеденится первым? Или только "ручками"?
     
  2. izl3sa

    izl3sa New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2010
    Сообщения:
    164
    Адрес:
    Spb
    кто есть первый в твоем понимании? Драйвер шины, функциональный или фильтрующий драйвера? И с какой стороны? Со стороны IRP, например, драйвер шины последним получаем пакет. =)
     
  3. 0x6b65

    0x6b65 Забанен

    Публикаций:
    0
    Регистрация:
    8 окт 2009
    Сообщения:
    92
    На Win2k3 такого способа нет, думаю, что на более поздних системах тоже нет. Но могу предложить "варварский" метод: вписываем свои обработчики в DeviceObject->DriverObject->MajorFunction[IRP_MJ_XXX]. Если хочется обрабатывать завершение IRP'ов, то нужно не забыть инкрементировать DeviceObject->StackSize, захватив при этом нужный SpinLock:
    Код (Text):
    1.  KIRQL irql = KeAcquireQueuedSpinLock(LockQueueIoDatabaseLock).