Операционные системы. Программирование в операционной среде Windows

84 6.2. Чтение из файла Если файл небольшого размера, то его можно считать целиком, для этого необходимо определить размер файла с помощью функции GetFileSize. DWORD GetFileSize( HANDLE hFile, // дескриптор файла LPDWORD IpFileSizeHigh ); //указатель на размер файла Параметр hFile - дескриптор открытого файла, IpFileSizeHigh - указатель на переменную, куда будет возвращен размер файла, может быть NULL. Возвращаемое значение - размер файла, при аварийном завершении возвращает OxFFFFFFFF. L[pnMep вызова: / определяем размер файла DWORD fsize=GetFileSize(hMyFile, NULL); Для чтения данных из файла используется функция ReadFile: BOOL ReadFile( HANDLE hFile, // дескриптор файла для чтения LPVOID IpBuffer, // указатель на буфер для хранения данных DWORD nNumberOfBytesToRead, // количество байт для чтения LPDWORD IpNumberOfBytesRead, // указатель на количество // фактически считанных байтов LPOVERLAPPED IpOverlapped); //указатель на структуру OVERLAPPED В случае успешного завершения функция возвращает ненулевой результат. Е[араметр hFile -идентифицирует файл для чтения, должен быть открыт с доступом GENERIC READ. ЕЕараметр IpBuffer - указатель на буфер для приема данных. Е[араметр nNumberOfBytesToRead - определяет количество байтов, которые необходимо прочитать из файла. ЕЕараметр IpNumberOfBytesRead - определяет, сколько фактически прочитано байтов из файла. Е[араметр IpOverlapped -указывает на структуру OVERLAPPED. Если файл был создан с флагом FILE FLAG OVERLAPPED, указатель \pOverlapped не должен быть равен нулю. Если файл был открыт с флагом FILE FLAG OVERLAPPED и указатель IpOverlapped не равен NULL, операция чтения начинается со смещения, указанного в структуре OVERLAPPED и может вернуть результат до завершения операции чтения. В этом случае об окончании операции чтения, сигнализирует событие в структуре OVERLAPPED. Если файл был открыт без флага FILE FLAG OVERLAPPED и указатель IpOverlapped равен NULL, операция чтения начинается с текущей позиции файла и не может вернуть результат до завершения операции чтения. Если файл был открыт без флага FILE FLAG OVERLAPPED и указатель IpOverlapped не равен NULL, операция чтения начинается со смещения указанного в структуре

RkJQdWJsaXNoZXIy MTY0OTYy