Вопрос скорее познавательного характера, но хотелось бы знать. Каким образом USBTrace отслеживает запросы драйверов USB устройств? Известный для меня способ перехватывать URB (ну и отслеживать IRP запросы, в принципе) - написание фильтр-драйвера для определенного класса устройств (в нашем случае, для USB). USBTrace не использует фильтр-драйвер, как заявлено в описании продукта, и собственно, возникает вопрос - тогда как же?
MJ-хуки - хуки на MajorFunctions в каком-либо драйвере? (MJ-хуки - термин, встречающийся исключительно на wasm.ru, поэтому уточняю) Т.е. имеем стек USB драйверов, который в Windows XP выглядит так: myusbdriver.sys -> usbhub.sys -> usbehci.sys(usbuhci.sys, usbohci.sys). Скажем, в каждом драйвере перехватываются MajorFunctions функции и таким образом отслеживаем IRP и всё что нам нужно?
Да. Интересно. Даже не представляю, как это ещё называть. Ну можно, наверное, ещё "dispatch-хуки", но по сути то же самое ведь. Ну в каждом обычно не надо, обычно достаточно сесть под классовый драйвер и тогда получишь аккурат обобщённые URB-запросы. Но вообще я настолько плотно с USB-драйверами не работал. Могу посоветовать задать этот же вопрос на RSDN в соответствующем разделе, там есть пара человек, которые реально в теме, думаю, помогут. Да, кстати, в ранних DDK был ещё сэмпл USB-фильтра (сейчас идёт как часть Toaster Sample). Не слишком подробный, но может быть хоть что-то даст тоже (брать здесь).