Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Николаев СПО ЛР2.doc
Скачиваний:
4
Добавлен:
04.05.2019
Размер:
201.73 Кб
Скачать

0, // Атрибуты отсутствуют

NULL); // шаблон отсутствует

Возвращаемые значения

Если функция выполнилась успешно, возвращается хендл открытого файла-диска.

Если функция выполнилась неуспешно, возвращается INVALID_HANDLE_VALUE. Для получения более подробной информации об ошибке используйте GetLastError.

SetFilePointer

Функция SetFilePointer перемещает указатель в открытом файле. Эта функция хранит указатель файла в виде двух значений типа DWORD.

DWORD SetFilePointer(

HANDLE hFile, // хендл файла

LONG lDistanceToMove, // на сколько переместить указатель

PLONG lpDistanceToMoveHigh, // -//- (старший DWORD)

DWORD dwMoveMethod // точка отсчета

);

Параметры

hFile

[in] Хендл файла, указатель которого перемещается. Хендл должен быть создан с правами доступа к файлу GENERIC_READ или GENERIC_WRITE.

lDistanceToMove

[in] Младшее двойное слово знаковой (signed) величины, определяющей количество байт, на которое надо переместить указатель файла. Если lpDistanceToMoveHigh не равно NULL, lpDistanceToMoveHigh и lDistanceToMove образуют единое 64-битное знаковое смещение указателя. Если lpDistanceToMoveHigh равно NULL, lDistanceToMove является 32-битным знаковым значением. Положительное значение lDistanceToMove перемещает указатель файла вперед (к концу файла), а отрицательное значение – назад, к началу файла.

lpDistanceToMoveHigh

[in] Указатель на старшее двойное слово (32 бита) знакового 64-битного значения смещения указателя. Если старшее двойное слово не нужно, этот указатель может быть равен NULL. Если указатель не равен NULL, этот параметр получает также старший DWORD нового значения указателя файла.

Windows 95/98/ME: Если указатель lpDistanceToMoveHigh не равен NULL, он должен указывать либо на 0, либо на -1, знаковое расширение lDistanceToMove. Любые другие значения неверны.

dwMoveMethod

[in] Точка отсчета для перемещения указателя файла. Этот параметр может принимать одно из следующих значений:

Значение

Смысл

FILE_BEGIN

Точка отсчета – начало файла.

FILE_CURRENT

Точка отсчета – текущее значение указателя файла.

FILE_END

Точка отсчета – конец файла.

Возвращаемые значения

При успешном выполнении SetFilePointer и lpDistanceToMoveHigh равном NULL возвращаемое значение является младшим двойным словом нового указателя файла. Если lpDistanceToMoveHigh не равен NULL, функция возвращает младшее двойное слово нового указателя файла и помещает старшее двойное слово по адресу в lpDistanceToMoveHigh.

При неуспешном выполнении функции и lpDistanceToMoveHigh равном NULL, возвращается INVALID_SET_FILE_POINTER. Для получения дополнительной информации об ошибке используйте GetLastError.

При неуспешном выполнении функции и lpDistanceToMoveHigh не равном NULL, возвращается INVALID_SET_FILE_POINTER. Однако, поскольку константа INVALID_SET_FILE_POINTER является допустимым значением для младшего двойного слова нового указателя файла, необходимо проверять GetLastError, чтобы определить наличие ошибки. Если ошибка произошла, GetLastError вернет значение, отличное от NO_ERROR. Если новое значение указателя файла получается отрицательным, функция не выполняется, указатель не перемещается и GetLastError возвращает ERROR_NEGATIVE_SEEK.

Требования

  Windows NT/2000/XP: Требует Windows NT 3.1 или более позднюю версию.   Windows 95/98/Me: Требует Windows 95 или более позднюю версию.   Header: Объявлено в winbase.h; включается в windows.h.   Library: Kernel32.lib.

ReadFile

Функция ReadFile считывает данные из файла, начиная с позиции, на которой находится указатель файла. После завершения операции чтения указатель файла перемещается на число действительно прочитанных байт, кроме случая, когда файл был открыт с атрибутом совмещения (overlapped).

BOOL ReadFile(

HANDLE hFile, // хендл файла

LPVOID lpBuffer, // буфер для данных

DWORD nNumberOfBytesToRead, // количество байт, которое надо прочитать

LPDWORD lpNumberOfBytesRead, // количество действительно прочитанных байт

LPOVERLAPPED lpOverlapped // буфер совмещения

);

Параметры

hFile

[in] Хендл читаемого файла. Хендл должен быть создан с правом доступа GENERIC_READ.

lpBuffer

[out] Указатель на буфер, куда помещаются прочитанные из файла данные.

nNumberOfBytesToRead

[in] Задает количество байт, которое надо прочитать из файла.

lpNumberOfBytesRead

[out] Указатель на переменную, в которую помещается количество действительно прочитанных байт. ReadFile устанавливает это значение в 0, прежде чем начинает выполнять какие-либо действия.

lpOverlapped

[in] Указатель на структуру OVERLAPPED. Эта структура необходима, если hFile был создан с флагом FILE_FLAG_OVERLAPPED. В противном случае должен быть равен NULL.

Возвращаемые значения

При успешном выполнении функции возвращается ненулевое значение.

Если функция вернула не 0, а количество прочитанных байт равно 0, значит, указатель файла был в конце файла.

При неуспешном выполнении функция возвращает 0. Для получения дополнительной информации об ошибке используйте GetLastError.

Требования

  Windows NT/2000/XP: Требует Windows NT 3.1 или более позднюю версию.   Windows 95/98/Me: Требует Windows 95 или более позднюю версию.   Header: Объявлено в winbase.h; включается в windows.h.   Library: Kernel32.lib.

CloseHandle

Функция CloseHandle закрывает открытый хендл объекта

BOOL CloseHandle(

HANDLE hObject // хендл объекта

);

Параметры

hObject

[in/out] хендл открытого объекта.

Return Values

При успешном выполнении функция возвращает ненулевое значение.

При неуспешном выполнении функция возвращает 0. Для получения дополнительной информации об ошибке используйте GetLastError.

Требования

  Windows NT/2000/XP: Требует Windows NT 3.1 или более позднюю версию.   Windows 95/98/Me: Требует Windows 95 или более позднюю версию.   Header: Объявлено в winbase.h; включается в windows.h.   Library: Kernel32.lib.