`
bingtears
  • 浏览: 189390 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

创建文件映射函数CreateFileMapping中第一个参数设置成0xFFFFFFFF

    博客分类:
  • C++C
阅读更多
创建文件内存映射:
HANDLE hMySharedMapFile=CreateFileMapping((HANDLE)0xFFFFFFFF),
NULL,PAGE_READWRITE,0,0x1000,"MySharedMem");
其中第一个参数文件句柄设置成0XFFFFFFFF代表什么意思呢?
0XFFFFFFFF在内存中又是什么意思呢?
为什么要把文件句柄设置成0XFFFFFFFF???
网友回复:句柄设置成0XFFFFFFFF表示在内存中开辟一块区域。
网友回复:就是在内存中建立,而不是使用盘上的某个文件啊
网友回复:内存映射API函数CreateFileMapping创建一个有名的共享内存:
HANDLE CreateFileMapping(
HANDLE hFile, // 映射文件的句柄,
//设为0xFFFFFFFF以创建一个进程间共享的对象
LPSECURITY_ATTRIBUTES lpFileMappingAttributes, // 安全属性
DWORD flProtect, // 保护方式
DWORD dwMaximumSizeHigh, //对象的大小
DWORD dwMaximumSizeLow,
LPCTSTR lpName // 必须为映射文件命名
);


网友回复: 要把文件映像到内存,首先必须调用CreateFileMapping()函数,它需要用一个由CreateFile()函数打开并返回的文件句柄,对大多数共享内存应用程序,必须把此句柄设置为0xFFFFFFFF,用来指定系统页面文件。通过使用上面的特殊句柄,可以不调用CreateFile函数,当然在完成时,也不必有一个内存的磁盘文件拷贝。

网友回复:0XFFFFFFFF是INVALID_HANDLE_VALUE,表示不指定文件,在系统分页文件(pagefile.sys)中分配映射的磁盘空间。
网友回复:If hFile is (HANDLE)0xFFFFFFFF, the calling process must also specify a mapping object size in the dwMaximumSizeHigh and dwMaximumSizeLow parameters. The function creates a file-mapping object of the specified size backed by the operating-system paging file rather than by a named file in the file system. The file-mapping object can be shared through duplication, through inheritance, or by name.


网友回复:MSDN:
If hFile is INVALID_HANDLE_VALUE, the calling process must also specify a size for the file mapping object in the dwMaximumSizeHigh and dwMaximumSizeLow parameters. In this scenario, CreateFileMapping creates a file mapping object of a specified size that is backed by the system paging file instead of by a file in the file system.

INVALID_HANDLE_VALUE就是-1即0xffffffff
网友回复:实际上是用于进程间通信的,以共享内存的方式。
网友回复:-1

hFile
Handle to the file from which to create a mapping object. The file must be opened with an access mode compatible with the protection flags specified by the flProtect parameter. It is recommended, though not required, that files you intend to map be opened for exclusive access.
If hFile is (HANDLE)0xFFFFFFFF, the calling process must also specify a mapping object size in the dwMaximumSizeHigh and dwMaximumSizeLow parameters. The function creates a file-mapping object of the specified size backed by the operating-system paging file rather than by a named file in the file system. The file-mapping object can be shared through duplication, through inheritance, or by name.

本篇文章来源于 IT者 | www.itzhe.cn 原文链接:http://itzhe.cn/news/20080923/231975.html
分享到:
评论

相关推荐

    VC++中用内存映射文件.doc

    `CreateFileMapping`函数用于创建一个内存映射文件对象,它可以关联到一个磁盘文件,也可以不关联,如参数`hFile`设置为`0XFFFFFFFF`,则会在虚拟内存中创建一个匿名内存映射对象。这个函数需要指定内存映射文件的...

    内存映射机制

    这个函数接收一个已打开文件的句柄作为参数,并返回一个内存映射文件对象的句柄。 - `HANDLE CreateFileMapping((HANDLE)0XFFFFFFFF, NULL, PAGE_READWRITE, 0, 4 * 1024, _TEXT("MyCustShareData"));` 这段代码...

    wince下的地址映射知识点滴

    2. 映射:驱动程序或应用程序可以通过CreateFileMapping和MapViewOfFile函数创建和映射文件到内存。 3. 销毁和释放:不再需要的映射可以通过UnmapViewOfFile和CloseHandle函数解除,物理内存则通过HeapFree释放。 ...

    海量数据访问——示例(C++)

    2. **创建文件映射对象**:接下来是通过`CreateFileMapping()`函数创建文件映射对象。这一步骤对于实现高效的数据访问至关重要。文件映射对象可以将文件的一部分或者全部映射到进程的虚拟地址空间中,从而允许程序像...

    进程之间共享内存

    如果`CreateFileMapping`成功,进程A将得到一个内存映射文件句柄`lhShareMemory`,然后使用`MapViewOfFile`函数将这个内存映射到进程的地址空间。`MapViewOfFile`的作用是将文件映射对象的一部分映射到进程的虚拟...

    windows用户称拦截api

    对于一个被映射的文件,主要是使用CreateFileMapping函数,利用他我们可以设定一些读写属性:PAGE_READONLY,PAGE_READWRITE,PAGE_WRITECOPY.第一参数指定只能对该映射文件进行读操作。任何写操作将导致内存访问错误。...

    windows下打印机系统设计

    - 使用`CreateFileMapping`函数创建共享内存区域,该函数创建一个文件映射对象,使得指定的文件或文件的一部分可以被映射到进程的地址空间中。 - 使用`MapViewOfFile`函数将共享内存区域映射到进程的地址空间中,...

    计算机操作系统实验报告1.doc

    hMemShare = CreateFileMapping((HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE, 0, sizeof(student), "TestMemShare"); if (hMemShare == NULL) { cout ; return; } // 映射共享内存到进程地址空间 lpstu = (student...

Global site tag (gtag.js) - Google Analytics