Здравствуйте, serg_fork, Вы писали:
_>Здравствуйте, Mike_12, Вы писали:
M_>>Подскажите, как из драйвера узнать имя обрабатываемого файла? Например мне нужно обрабаьтывать только текстовые. Я написал драйвер-фильтр, но немогу понять, как узнать расширение файла.
M_>>Спасибо
_>Если ты написал драйвер-фильтр, то узнать расширение файла для тебя не составит особого труда.
_>P.S. Так и пиши, содрал подчистую пример из IFS/filemon а что он делает, ума не приложу.
VOID GetFileName(PUNICODE_STRING pusFileName)
{
ANSI_STRING asFileName;
RtlUnicodeStringToAnsiString(&asFileName, pusFileName, TRUE);
// напечатать имя файла
if(asFileName.Buffer)
DbgPrint("FILE NAME: %s \n", asFileName.Buffer);
RtlFreeAnsiString(asFileName);
}
}
NTSTATUS HookDispatcher(PDEVICE_OBJECT pDeviceObject, PIRP pIrp)
{
PIO_STACK_LOCATION pCurStack = IoGetCurrentIrpStackLocation();
switch(pCurStack->MajorFunction)
{
case IRP_MJ_CREATE:
// имя файла хранится в pCurStack->FileObject->FileName
GetFileName(&pCurStack->FileObject->FileName);
break;
///другие обработчики
}
}