Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Параметры. hFile — дескриптор файла, который должен быть создан с правами доступа по чтению или по записи (или с правами доступа одновременно обоих типов)




hFile — дескриптор файла, который должен быть создан с правами доступа по чтению или по записи (или с правами доступа одновременно обоих типов).

IDistanceToMove — 32-битовое число типа LONG со знаком, указывающее величину смещения, на которое должен быть перемещен указатель файла, или число типа LONG без знака, указывающее позицию, в которую должен быть перемещен указатель файла, в зависимости от значения параметра dwMoveMethod.

lpDistanceToMoveHigh — указатель на старшую часть 64-битового смещения, на которое должен быть перемещен указатель файла. Если значение этого параметра задано равным NULL, то функция может применяться только к файлам, размер которых не превышает 2³²–2 (в байтах). Этот же параметр используется для получения старшей части возвращаемого функцией значения указателя файла.[15]Младшую часть указателя файла возвращает сама функция.

dwMoveMethod — этот параметр устанавливает один из трех возможных режимов перемещения указателя файла.

• FILE_BEGIN — указатель файла позиционируется относительно начала файла, причем параметр DistanceToMove интерпретируется как беззнаковое число.

• FILE_CURRENT — указатель файла перемещается в сторону больших или меньших значений относительно текущей позиции, причем параметр DistanceToMove интерпретируется как число со знаком. Положительным значениям соответствует перемещение указателя файла в сторону больших значений.

• FILE_END — указатель файла перемещается в сторону больших или меньших значений относительно позиции конца файла.

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

Описанный метод представления 64-битовых указателей файлов становится причиной некоторых затруднений, поскольку возвращенное функцией значение может представлять как действительную позицию указателя файла, так и код ошибки. Рассмотрите, например, случай, когда фактической позиции указателя соответствует значение 2³²–1 (то есть, 0xFFFFFFFF), а при вызове функции указывается ненулевое значение старшей части перемещения указателя файла. Чтобы определить, представляет ли значение, возвращенное функцией SetFile-Pointer, действительную позицию указателя файла или же код ошибки, следует вызвать функцию GetLastError, возвращаемым значением которой в случае неудачного завершения не может быть NO_ERROR. Из этих рассуждений становится ясно, почему размеры файлов не могут превышать значения 2³²–2, если при вызове функции SetFilePointer старшая часть указателя файла опускается.

Дополнительную неразбериху привносит тот факт, что старшая и младшая компоненты указателя файла отделены друг от друга и обрабатываются по-разному. Младшая часть определяется через передачу параметра по значению и равна возвращаемому значению функции, тогда как для старшей части применяется передача параметра по ссылке, и этот параметр используется как в качестве входного, так и выходного.

К счастью, 32-битовой адресации вам будет вполне достаточно для большинства задач программирования. Тем не менее, приведенные в книге примеры программ рассчитаны на далекую перспективу и используют, "как и положено", 64-битовую арифметику.





Поделиться с друзьями:


Дата добавления: 2015-09-20; Мы поможем в написании ваших работ!; просмотров: 481 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Лучшая месть – огромный успех. © Фрэнк Синатра
==> читать все изречения...

2268 - | 2155 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.