|
|
1.1 root 1: //--------------------------------------------------------------------------
2: //
3: // Module Name: MAPFILE.C
4: //
5: // Brief Description: This module contains the PSCRIPT driver's MapFile
6: // routine.
7: //
8: // Author: Kent Settle (kentse)
9: // Created: 05-Nov-1991
10: //
11: // Copyright (c) 1991 - 1992 Microsoft Corporation
12: //--------------------------------------------------------------------------
13:
14: #include "stddef.h"
15: #include "windows.h"
16: #include "winddi.h"
17: #include "libproto.h"
18:
19: //--------------------------------------------------------------------------
20: // PVOID MapFile(pwstr)
21: // PWSTR pwstr;
22: //
23: // Returns a pointer to the mapped file defined by pwstr.
24: //
25: // Parameters:
26: // pwstr UNICODE string containing fully qualified pathname of the
27: // file to map.
28: //
29: // Returns:
30: // Pointer to mapped memory if success, NULL if error.
31: //
32: // NOTE: UnmapViewOfFile will have to be called by the user at some
33: // point to free up this allocation.
34: //
35: // History:
36: // 15:08 on Thu 27 Feb 1992 -by- Lindsay Harris [lindsayh]
37: // Change PWSZ -> pwstr {Preferred type for Unicode stuff}
38: //
39: // 05-Nov-1991 -by- Kent Settle [kentse]
40: // Wrote it.
41: //--------------------------------------------------------------------------
42:
43: PVOID MapFile(pwstr)
44: PWSTR pwstr;
45: {
46: PVOID pv;
47: HANDLE hFile, hFileMap;
48:
49: // open the file we are interested in mapping.
50:
51: if ((hFile = CreateFileW(pwstr, GENERIC_READ, FILE_SHARE_READ,
52: NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
53: NULL)) == INVALID_HANDLE_VALUE)
54: {
55: RIP("MapFile: CreateFileW failed.\n");
56: return((PVOID)NULL);
57: }
58:
59: // create the mapping object.
60:
61: if (!(hFileMap = CreateFileMappingW(hFile, NULL, PAGE_READONLY,
62: 0, 0, (PWSTR)NULL)))
63: {
64: RIP("MapFile: CreateFileMapping failed.\n");
65: return((PVOID)NULL);
66: }
67:
68: // get the pointer mapped to the desired file.
69:
70: if (!(pv = (PVOID)MapViewOfFile(hFileMap, FILE_MAP_READ, 0, 0, 0)))
71: {
72: RIP("MapFile: MapViewOfFile failed.\n");
73: return((PVOID)NULL);
74: }
75:
76: // now that we have our pointer, we can close the file and the
77: // mapping object.
78:
79: if (!CloseHandle(hFileMap))
80: RIP("MapFile: CloseHandle(hFileMap) failed.\n");
81:
82: if (!CloseHandle(hFile))
83: RIP("MapFile: CloseHandle(hFile) failed.\n");
84:
85: return(pv);
86: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.