【发布时间】:2014-02-13 05:50:21
【问题描述】:
我想通过 VMWare ESX 读取 Windows Server 2003 VM 中的网络文件。这个简单的代码失败了(在 Visual Studio 2010 中)
hFile = CreateFileA("\\MyServer\myfile",
GENERIC_READ, // open for writing
FILE_SHARE_READ, // do not share
NULL, // default security
OPEN_EXISTING, // create new file only
FILE_ATTRIBUTE_NORMAL, // normal file
NULL); // no attr. template
如果 (hFile == INVALID_HANDLE_VALUE) 返回;
char * buffer = (char*)malloc(bufferSize);
如果(缓冲区== NULL)返回;
if( FALSE == ReadFile(hFile, buffer, bufferSize, &dwBytesToRead, NULL) )
{
printf("Terminal failure: Unable to read from file, code is %d.\n", GetLastError());
CloseHandle(hFile);
return;
}
当 bufferSize 大于 40,000,000 时,ReadFile 失败,GetLastError 返回 1450,表示“系统资源不足,无法完成请求的服务。”
一些附加信息:
1) 此代码在物理机上运行
2) 我的虚拟机有 4 核和 16 GB 内存,我在 8G 和 24G 之间更改页面文件大小,没有效果,仍然失败。
3) \\MyServer\myfile 实际上是在运行代码的本地机器中。但是,如果我将文件更改为 d:\myfile(与 \\MyServer\myfile 相同的文件),则 ReadFile 成功
4) 代码在 bufferSize 小于 30,000,000 时有效
看起来 VMWare ESC 对 Windows 设置了一些限制。有人可以给我有关如何调试/修复它的建议吗? (没有更低的bufferSize)
非常感谢!
【问题讨论】:
标签: windows visual-studio-2010 vmware