Я разрабатываю драйвер miniFilter и взял в качестве примера мини-фильтр Microsoft SwapBuffers.Процедура InstaceSetup по умолчанию подключается ко всем томам.Но я не хочу присоединяться ко всем из них, только к некоторым выбранным ...
Я попытался установить «NULL» вместо «InstanceSetup» в «FLT_REGISTRATION FilterRegistration», а затем вызвать «FltAttachVolume»в подпрограмме "DriverEntry".Я сделал следующее:
PFLT_VOLUME vol;UNICODE_STRING vname;.... RtlInitUnicodeString (& vname, L "E: \");FltGetVolumeFromName (gFilterHandle, & vname, & vol);... FltAttachVolume (gFilterHandle, vol, NULL, NULL);...
Когда я пытался вызвать FltAttachVolume с параметром "NULL", 3-й (PCUNICODE_STRING InstanceName), я получил "STATUS_FLT_INSTANCE_NAME_COLLISION" ошибка.
Если явызовите FltAttachVolume с 3-м параметром «НЕ НУЛЬ», таким как «UniqueInstaceName», он возвращает меня "- 2145452013" .
Я получаю те же ошибки, когда я,я пытаюсь подключить том, используя процедуру FilterAttach из моего пользовательского приложения, например:
... driver.driverName = L "swapBuffers";... LPCWSTR vname = L "F: \";... FilterAttach (имя_драйвера_драйвера, vname, NULL, NULL, NULL);
с 3-м параметром "NULL" (LPCWSTR lpInstanceName): "ERROR_FLT_INSTANCE_NAME_COLLISION"
1022 * С "NOT-NULL":
"- 2145452013" .
В MiniSpy miniFilter есть приложение User, и используется подпрограмма FilterAttach.Я попытался вызвать эту процедуру в моем приложении таким же образом - безрезультатно.
Наконец, я изменил инф-файл swapBuffers:
- там не было параметра DefaultInstance, я установил его: "SwapBuffers - Top Instance".
также я скопировал это из инф-файла MiniSpy:
[MiniFilter.AddRegistry] HKR, "Instances", "DefaultInstance", 0x00000000,% DefaultInstance% HKR, "Instances \"% Instance1.Name%,«Высота», 0x00000000,% Instance1.Altitude% HKR, «Instances \»% Instance1.Name%, «Флаги», 0x00010001,% Instance1.Flags% HKR, «Экземпляры \»% Instance2.Name%, «Высота»,0x00000000,% Instance2.Altitude% HKR, "Instances \"% Instance2.Name%, "Flags", 0x00010001,% Instance2.Flags% HKR, "Instances \"% Instance3.Name%, "Altitude", 0x00000000,% Instance3.Altitude% HKR, "Instances \"% Instance3.Name%, "Flags", 0x00010001,% Instance3.Flags%
............. Instance1.Name = "SwapBuffers - Средний экземпляр "Instance1.Altitude =" 370000 "Instance1.Flags = 0x1;Подавить автоматическое вложение Instance2.Name = "SwapBuffers - Bottom Instance" Instance2.Altitude = "361000" Instance2.Flags = 0x1;Подавить автоматическое вложение Instance3.Name = "SwapBuffers - Top Instance" Instance3.Altitude = "385100" Instance3.Flags = 0x1;Подавить автоматические вложения
, изменив флаги на 0x1 для подавления автоматических вложений.И только устанавливая мой SwapBuffers miniFilter через этот файл Inf, я получил "STATUS_SUCCESS" из процедуры FltAttachVolume в моем драйвере.Но на самом деле он не подключается к диску ...
Что я делаю не так?Спасибо.