Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!1-25.doc
Скачиваний:
11
Добавлен:
28.10.2018
Размер:
2.62 Mб
Скачать

7) GetComputerName, GetUserNameA

Функция GetComputerName возвращает имя локального компьютера.

BOOL GetComputerName(

LPTSTR lpBuffer,//имя локал. комп.(длина буфера равна MAX_COMPUTERNAME_LENGTH+1)[out]

LPDWORD lpnSize //размер буфера (лучше поставить MAX_COMPUTERNAME_LENGTH+1) [out/in] );

Функция GetUserName возвращает имя текущего пользователя.

BOOL GetUserName(

LPTSTR lpBuffer, // имя юзера( длина буфера равна UNLEN + 1 ) [out]

LPDWORD nSize // размер буфера ( лучше поставить UNLEN + 1 ) [out/in]);

8) GetSystemDirectory, GetTempPath, GetWindowsDirectory, GetCurrentDirectory

Функция GetSystemDirectory возвращает путь к системной директории.

UINT GetSystemDirectory(

LPTSTR lpBuffer, // буфер для системной директории [out]

UINT uSize // размер буфера [in] );

Возвращаемое значение: Эта функция возвращает размер буфера для системной директории не включая нулевого значения в конце, если она вызвана правильно.

Функция GetTempPath возвращает путь к директории, отведённой для временных файлов.

DWORD GetTempPath(

DWORD nBufferLength, // размер буфера [in]

LPTSTR lpBuffer // буфер для временной директории [out] );

Возвращаемое значение:Эта функция возвращает размер буфера для системной директории не включая нулевого значения в конце, если она вызвана правильно.

Функция GetWindowsDirectory возвращает путь к Windows директории.

UINT GetWindowsDirectory(

LPTSTR lpBuffer, // буфер для Windows директории [out]

UINT uSize // размер буфера [in] );

Функция GetCurrentDirectory возвращает путь к текущей директории.

DWORD GetCurrentDirectory(

DWORD nBufferLength, // размер буфера [in]

LPTSTR lpBuffer // буфер для текущей директории [out] );

9) DeviceIoControl.

Функция DeviceIoControl позволяет прикладной программе обращаться напрямую к драйверу устройства и выполнять большое количество действий, среди которых: форматирование дорожек или раздела, выталкивание носителя из привода, разбивка диска на разделы и многие другие.

10) Для работы с каталогами и файлами предназначены функции: GetCurrentDirectory- Получение текущего каталога; SetCurrentDirectory- Смена текущего каталога; GetSystemDirectory- Получение системного каталога; GetWindowsDirectory- Получение основного каталога системы; CreateDirectory- Создание каталога; RemoveDirectory- Удаление каталога; CopyFile- Копирование файла; MoveFile- Перемещение или переименование файла; DeleteFile- Удаление файла.

11) CreateFile. HANDLE CreateFile(

LPCTSTR lpFileName, // имя файла

DWORD dwDesiredAccess, // тип доступа к файлу

DWORD dwShareMode, // режим совместного исп-я файла различными процессами

LPSECURITY_ATTRIBUTES lpSecurityAttributes, // указывает на структуру, описывающую защиту создаваемого объекта ядра. Ему может быть присвоено значение NULL

DWORD dwCreationDistribution, // определяет действия функции в зависимости от того, существует ли уже файл с указанным именем

DWORD dwFlagsAndAttributes, // определяет атрибуты файла, если он создается и задает режим работы с файлом (FILE_ATTRIBUTE_ARCHIVE, FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_NORMAL, FILE_ATTRIBUTE_READONLY, FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_TEMPORARY)

HANDLE hTemplateFile // либо равен NULL, либо задает описатель открытого файла);

В случае удачи функция CreateFile возвращает описатель открытого файла как объекта ядра. Существенно, что в противном случае она возвращает не NULL, а INVALID_HANDLE_VALUE.

Для работы с файлами используются следующие функции: ReadFile, WriteFile, SetFilePointer - Позиционирование указателя, SetEndOfFile- Изменение размера файла, FlushFileBuffers- Принудительная запись буферов кэширования на диск, LockFile, UnlockFile.

Перемещать, переименовывать, копировать или удалять папки вместе с файлами можно с помощью функции SHFileOperation.

12) FindFirstChangeNotification. Windows позволяет организовать слежение за изменениями объектов файловой системы. Для этого служит функция FindFirstChangeNotification:

HANDLE FindFirstChangeNotification(LPCTSTR lpPathName,//Путь к папке

BOOL bWatchSubtree,  // Задает необходимость слежения за изменениями во вложенных папках

  DWORD  dwNotifyFilter); // Фильтр событий

Можно продолжить слежение, используя функцию FindNextChangeNotification:

BOOL FindNextChangeNotification(HANDLE hChangeHandle).

По завершении работы идентификатор должен быть закрыт при помощи функции FindCloseChangeNotification:

BOOL FindCloseChangeNotification(HANDLE hChangeHandle).

Чтобы не блокировать исполнение основного потока программы функцией ожидания, удобно реализовать ожидание изменений в отдельном потоке.