Идентификатор пользователя, создавшего файл, будет
Идентификатор пользователя, создавшего файл, будет записан в переменную типа long, адрес которой задается параметром FileOwnerID. По этому идентификатору с помощью функции GetBinderyObjectName() можно получить имя пользователя.
Функция поиска файлов _ScanFileInformation() возвращает 0 при успешном завершении или код ошибки:
Код ошибки |
Значение |
0x89 |
У программы нет прав для поиска файлов |
0xFF |
Файл не найден |
Для поиска файлов в каталоге можно использовать функцию E3h
прерывания INT21h:
На входе: |
AH |
= |
E3h; |
|
DS:SI |
= |
Адрес буфера запроса; |
|
ES:DI |
= |
Адрес буфера ответа; |
На выходе: |
AL |
= |
Код ошибки или 0, если операция завершилась без ошибок. |
Буфер запроса имеет следующий формат:
struct REQUEST { WORD PacketLength; // размер пакета запроса BYTE Function; // должно быть равно 15 WORD SequenceNumber; // номер для просмотра BYTE DirectoryHandle; // индекс каталога BYTE SearchAttributes; // тип файлов для поиска BYTE PathLength; // длина поля пути BYTE DirectoryPath[PathLength]; // путь к каталогу };
Буфер ответа имеет следующий формат:
struct REPLAY { WORD PacketLength; // размер пакета WORD SequenceNumber; // номер для просмотра BYTE FileName[15]; // имя файла BYTE FileAttributes; // атрибуты файла BYTE ExtendedFileAttributes; // расширенные // атрибуты файла long FileSize; // размер файла в байтах BYTE CreationDate[2]; // дата создания BYTE LastAccessDate[2]; // дата последнего доступа BYTE LastUpdateDateAndTime[4]; // дата и время // обновления BYTE LastArchiveDateAndTime[4]; // дата и время // выгрузки BYTE Reserved[60]; // зарезервировано };
При вызове этой функции в цикле в первый раз в поле SequenceNumber буфера запроса необходимо записать значение 0xFFFF. При последующих вызовах необходимо уменьшать на единицу значение, полученное в поле SequenceNumber буфера ответа и записывать его в поле SequenceNumber буфера запроса. Следует учитывать, что байты в поле SequenceNumber записаны в обратном порядке, поэтому перед уменьшением необходимо переставить байты.Это можно сделать при помощи функции IntSwap() из библиотеки NetWare C Interface.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий