Добрый день.
Проблема следующая: нужно переделать SFilter под себя (до этого пользовался FileSpy), взял его из последнего SDK, установил, вроде бы все хорошо.
Диагностика показывает что он запущен (QueryServiceStatusEx), но при попытке получить хэндлер:
HANDLE hHandle = hDevice = CreateFile( L"\\\\.\\SFilter",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
ругается с кодом 3: не находит нужного файла... Не подскажите, как это обойти?
06.03.07 19:20: Перенесено модератором из 'WIN API' — Alex Fedotov
Здравствуйте, Phess, Вы писали:
P>ругается с кодом 3: не находит нужного файла... Не подскажите, как это обойти?
Если Вы заглянете в код SFilter::DriverEntry, то увидите там, что фильтр не выставляет свой CDO наружу, для win32:
//
// Create the Control Device Object (CDO). This object represents this
// driver. Note that it does not have a device extension.
//
RtlInitUnicodeString( &nameString, L"\\FileSystem\\Filters\\SFilterCDO" );
status = IoCreateDevice( DriverObject,
0, //has no device extension
&nameString,
FILE_DEVICE_DISK_FILE_SYSTEM,
FILE_DEVICE_SECURE_OPEN,
FALSE,
&gSFilterControlDeviceObject );
if (status == STATUS_OBJECT_PATH_NOT_FOUND) {
//
// This must be a version of the OS that doesn't have the Filters
// path in its namespace. This was added in Windows XP.
//
// We will try just putting our control device object in the
// \FileSystem portion of the object name space.
//
RtlInitUnicodeString( &nameString, L"\\FileSystem\\SFilterCDO" );
status = IoCreateDevice( DriverObject,
0, //has no device extension
&nameString,
FILE_DEVICE_DISK_FILE_SYSTEM,
FILE_DEVICE_SECURE_OPEN,
FALSE,
&gSFilterControlDeviceObject );
соотв что Вам нужно сделать — это всего лишь после успешного создания CDO создать симлинк, по типу как делает FileSpy:
RtlInitUnicodeString( &linkString, L"\\DosDevices\\SFilter");
status = IoCreateSymbolicLink(&linkString, &nameString);
PS вопросы по Sfilter & драйверам следует задавать в форуме
asm... << RSDN@Home 1.2.0 alpha rev. 655>>
Здравствуйте, Valery A. Boronin, Вы писали:
VAB>Здравствуйте, Phess, Вы писали:
P>>ругается с кодом 3: не находит нужного файла... Не подскажите, как это обойти?
VAB>Если Вы заглянете в код SFilter::DriverEntry, то увидите там, что фильтр не выставляет свой CDO наружу, для win32:
.....
Большое спасибо, впредь буду внимательнее!