| Собственный обработчик создания файла и собственный обработчик открытия файла Собственный
обработчик создания (открытия) файла может, например, проверить права доступа
текущего процесса к создаваемому (открываемому) файлу, и если дос- туп запрещен,
то вернуть статус создания (открытия) файла STATUS_ACCESS_DENIED (доступ запрещен),
иначе вернуть управление оригинальному обработчику. При этом можно вести журнал
как удавшихся, так и не удавшихся попыток доступа, регистрируя имя процесса, в
контексте которого осуществляется попытка доступа к ресурсу, и имя создаваемого
(открываемого) файла. После исполнения собственного обработчика необходимо передать
управление по старому адресу, чтобы дать возможность стандартному обработчику
выполнить запрошенные действия. NTSTATUS HookCreateFile (OUT
PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES
ObjectAttributes, OUT PIO_STATUS_BLOCK loStatusBlock, IN PLARGE_INTEGER
AllocationSize, IN ULONG FileAttributes, IN ULONG ShareAccess, IN ULONG CreateDisposition,
IN ULONG CreateOptions,IN PVOID EaBuffer,IN ULONG EaLength) { if (Access
(ObjectAttributes) ) return RealCreateFile (FileHandle, DesiredAccess/ ObjectAttributes,
loStatusBlock, AllocationSize, FileAttributes, ShareAccess, CreateDisposition,
CreateOptions,EaBuf fer, EaLength) ; return STATUSACCESSDENIED; |