/*++ Copyright (c) 1995 Microsoft Corporation Module Name: string.c Abstract: This file implements string functions for fax. Author: Wesley Witt (wesw) 23-Jan-1995 Environment: User Mode --*/ #include #include #include #include #include "faxutil.h" BOOL MapFileOpen( LPTSTR FileName, BOOL ReadOnly, DWORD ExtendBytes, PFILE_MAPPING FileMapping ) { FileMapping->hFile = NULL; FileMapping->hMap = NULL; FileMapping->fPtr = NULL; FileMapping->hFile = CreateFile( FileName, ReadOnly ? GENERIC_READ : GENERIC_READ | GENERIC_WRITE, ReadOnly ? FILE_SHARE_READ : 0, NULL, OPEN_EXISTING, 0, NULL ); if (FileMapping->hFile == INVALID_HANDLE_VALUE) { return FALSE; } FileMapping->fSize = GetFileSize( FileMapping->hFile, NULL ); FileMapping->hMap = CreateFileMapping( FileMapping->hFile, NULL, ReadOnly ? PAGE_READONLY : PAGE_READWRITE, 0, FileMapping->fSize + ExtendBytes, NULL ); if (FileMapping->hMap == NULL) { CloseHandle( FileMapping->hFile ); return FALSE; } FileMapping->fPtr = MapViewOfFileEx( FileMapping->hMap, ReadOnly ? FILE_MAP_READ : FILE_MAP_WRITE, 0, 0, 0, NULL ); if (FileMapping->fPtr == NULL) { CloseHandle( FileMapping->hFile ); CloseHandle( FileMapping->hMap ); return FALSE; } return TRUE; } VOID MapFileClose( PFILE_MAPPING FileMapping, DWORD TrimOffset ) { UnmapViewOfFile( FileMapping->fPtr ); CloseHandle( FileMapping->hMap ); if (TrimOffset) { SetFilePointer( FileMapping->hFile, TrimOffset, NULL, FILE_BEGIN ); SetEndOfFile( FileMapping->hFile ); } CloseHandle( FileMapping->hFile ); }