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

Discussion in 'WASM.NT.KERNEL' started by katrus, Jul 14, 2010.

  1. katrus

    katrus New Member

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

    izl3sa New Member

    Blog Posts:
    0
    кто есть первый в твоем понимании? Драйвер шины, функциональный или фильтрующий драйвера? И с какой стороны? Со стороны IRP, например, драйвер шины последним получаем пакет. =)
     
  3. 0x6b65

    0x6b65 Забанен

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