【发布时间】:2011-09-29 20:08:12
【问题描述】:
我无法创建命名共享内存并检查其大小。当我在这样的函数中调用 GetFileSizeEx 函数时,它会失败。关于如何调试的任何想法?
void test_getsize(const char* lpName, int size){
HANDLE handle = CreateFileMapping(
INVALID_HANDLE_VALUE, // use paging file
NULL, // default security
PAGE_READWRITE, // read/write access
0, // maximum object size (high-order DWORD)
size, // maximum object size (low-order DWORD)
lpName); // name of mapping object
if (handle== NULL || handle== INVALID_HANDLE_VALUE){
last_error = get_error_from_errorno();
*error_return =1;
}
LARGE_INTEGER new_size;
err = GetFileSizeEx(handle, &new_size);
if (err==0){ printf("err ");} else {printf("pass ");}
printf("size=%lu\n", (unsigned long)new_size.QuadPart);
}
【问题讨论】:
-
这段代码的结果是什么?
-
您没有使用文件,无法获取不存在文件的大小。
-
我有点(很多?)迟到了,但是你为什么不使用 MapViewOfFile/VirtualQuery 呢?
标签: c windows shared-memory