【发布时间】:2019-06-18 10:59:59
【问题描述】:
如何仅映射文件的第一个字母??
我已经为参数尝试了这些值:
1, // maximum object size (high-order DWORD)
1, // maximum object size (low-order DWORD)
(我不知道它们之间的区别)。
对于只有 1 个字母的映射来说,1 是正确的参数吗?
#define FILENAME "c:\gibrish.bin"
#include <Windows.h>
#include <stdio.h>
int main()
{
HANDLE hFile;
LPCSTR pFileName = FILENAME;
hFile = CreateFileA(pFileName, // file name
FILE_MAP_ALL_ACCESS, // access type
0, // other processes can't share
NULL, // security
OPEN_EXISTING, // open only if file exists
FILE_ATTRIBUTE_NORMAL, NULL);
HANDLE hMapFile;
////////mapping here
hMapFile = CreateFileMappingA(hFile, // file handle
NULL, // default security
FILE_MAP_ALL_ACCESS, // read access
1, // maximum object size (high-order DWORD)
1, // maximum object size (low-order DWORD)
// 0 means map the whole file
"gibrishFile"); // name of mapping object, in case we
// want to share it
return 0;
}
【问题讨论】:
-
第一行已经有问题:
"c:\gibrish.bin"应该是"c:\\gibrish.bin"。而且您不会进行任何错误检查。 -
@Jabberwocky 好的,谢谢,但你能回答这个问题吗?
-
如果节由普通文件支持,MaximumSize 指定文件可以扩展或映射到的最大大小。如果您将其设置为小于当前文件大小的值 - 它没有效果。并且截面视图总是取整
PAGE_SIZE的倍数。你不能映射 1 个字节。视图将是最小的PAGE_SIZE(4096 字节)
标签: c file dictionary winapi mapping