`
bingtears
  • 浏览: 188387 次
  • 性别: 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
分享到:
评论

相关推荐

    C++中使用内存映射文件处理大文件

    2. **CreateFileMapping**: 使用创建的文件句柄,创建一个文件映射对象。此函数定义了文件映射的保护属性、最大大小以及名称。这一步是将文件与内存空间关联的关键。 3. **MapViewOfFile**: 通过文件映射对象,将...

    VC++中使用内存映射文件处理大文件.doc

    内存映射文件是一种特殊的文件映射技术,它允许程序将一个或多个文件映射到进程的虚拟地址空间内,这样就可以像访问内存一样访问文件中的数据。这种方法特别适合于处理大文件,因为它避免了传统文件I/O操作中的频繁...

    内存映射的封装 包含读、写文件

    1. **创建映射对象**:使用系统API(如Windows上的CreateFileMapping或Linux上的mmap)创建一个内存映射对象,该对象关联到要映射的文件。这个对象提供了映射区域的大小和属性。 2. **获取映射视图**:通过映射对象...

    内存映射文件示例程序啊

    在本程序中,我们使用 CreateFileMapping 函数创建了一个文件映射对象,用于映射“Test.txt”文件到内存中。 MapViewOfFile 函数 MapViewOfFile 函数用于创建映射视图,该函数需要指定文件映射对象、访问权限、...

    通过文件映射,进程间通信demo

    在操作系统中,文件映射是将一个文件的内容映射到进程的虚拟地址空间中,这样进程就可以像访问内存一样访问文件。这种方式不仅能够加速对大文件的访问,还能让多个进程共享同一份数据,从而实现进程间的通信。 在...

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

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

    易语言加速文件映射

    1. **CreateFileMapping**:这是创建文件映射对象的函数,它接受一个文件句柄作为参数,返回一个映射对象的句柄。这个句柄随后可以用于映射文件到进程的地址空间。 2. **CloseHandle**:当不再需要文件映射对象或...

    vc内存映射文件操作.doc

    - `CreateFileMapping` 函数创建一个新的文件映射对象。这个对象将文件与进程的虚拟内存关联起来。参数包括文件句柄、保护属性(PAGE_READWRITE 表示读写权限)、文件大小等。如果创建失败,同样会抛出异常。 3. *...

    文件映射实现文件逆序

    在Windows系统中,`CreateFileMapping`函数用于创建一个文件映射对象,该对象可以将文件或者部分文件映射到进程的地址空间。其主要参数包括文件句柄、保护属性(如只读或读写权限)、文件大小等。创建成功后,会返回...

    内存映射读写文件的方法

    内存映射文件并不是真的将整个文件加载到物理内存中,而是创建一个映射对象,这个对象代表了文件在虚拟内存中的视图。当需要访问文件内容时,操作系统会自动调度磁盘I/O,将所需的数据放入内存中。这样,通过指针...

    CreateFileMapping的使用

    `CreateFileMapping` 是 Windows API 提供的一个用于创建或打开文件映射对象的函数。通过该函数可以将一个已存在的文件或者一段固定大小的内存区域映射到进程的地址空间中。这种机制常被用于处理大文件或实现进程间...

    磁盘文件映射内存映射

    在Windows系统中,可以使用`CreateFileMapping`函数创建一个映射对象,然后使用`MapViewOfFile`函数将文件映射到进程的地址空间。在Linux系统中,可以使用`mmap`系统调用来完成同样的操作。 例如,在Linux中,创建...

    VC++中使用内存映射文件处理大文件

    2. **创建文件映射对象**:使用`CreateFileMapping()`函数创建文件映射对象,指定文件大小和访问模式。 3. **映射文件到内存**:使用`MapViewOfFile()`函数将文件映射到进程地址空间。 4. **处理文件数据**:直接...

    内存映射存储文件详细算法

    首先,内存映射文件的核心是`CreateFileMapping`函数,它创建一个文件映射对象,将文件与进程的虚拟内存关联。在这个例子中,函数接受多个参数,包括: 1. **物理文件句柄** (`hFile`):这是与文件交互的句柄,由`...

    内存映射文件(VC)

    在实际编程中,开发者首先需要调用 CreateFileForMapping 函数创建或打开一个文件,然后使用 CreateFileMapping 函数创建一个内存映射对象。接着,使用 MapViewOfFile 函数获取指向文件内容的内存指针,应用程序便可...

    文件映射封装类

    Windows中的文件映射功能主要由`CreateFileMapping`和`MapViewOfFile`函数实现。`mymmapw.cpp`可能包含了这些API的封装,以提供友好的C++接口,使得开发者能够更容易地创建和访问文件映射对象。`mymmapw.h`则可能是...

    内存映射 C++实例

    在这个例子中,我们使用了 `CreateFile` 函数创建文件句柄,`CreateFileMapping` 函数创建文件映射对象,`MapViewOfFile` 函数将文件映射到内存中,`CopyMemory` 函数复制内存中的数据,`UnmapViewOfFile` 函数取消...

    内存映射修改大文件_内存映射_MemoryFile_超大文件读写_

    内存映射(Memory Mapping)是一种高效处理大文件的技术,它允许程序通过操作系统将磁盘上的文件映射到进程的虚拟地址空间中,从而实现对文件的读写操作如同操作内存一样简便快速。这种方式大大提升了超大文件的读写...

    使用内存映射文件加快文件操作速度

    2. **创建文件映射对象**:接着调用`CreateFileMapping`函数创建一个文件映射对象,该对象将文件与内存映射起来。 3. **映射视图到进程地址空间**:使用`MapViewOfFile`函数将文件的一个或多个区域映射到进程的地址...

Global site tag (gtag.js) - Google Analytics