我想通過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)回報;
字符*緩衝液= (字符*)malloc的(BUFFERSIZE);
如果(緩衝== NULL)回報;
如果(FALSE == ReadFile的(HFILE,緩衝劑,緩衝區大小,& dwBytesToRead, NULL))
{
printf("Terminal failure: Unable to read from file, code is %d.\n", GetLastError());
CloseHandle(hFile);
return;
}
當緩衝區大小大於4000萬時,ReadFile的失敗,並且GetLastError返回1450的意思是「沒有足夠的系統資源存在,無法完成請求的服務。 「
一些額外的信息:
1)該代碼在一臺物理機器
2)我的VM具有4個內核和16 GB內存和I改變8G和24G之間的頁面文件大小不效果,仍然失敗
3)\\ MyServer \ myfile實際上是在運行代碼的本地機器上,但是如果我將文件更改爲d:\ myfile(與\\ MyServer \ myfile相同的文件) ,那麼ReadFile成功
4)代碼在b ufferSize小於30,000,000
它看起來像VMWare ESC在Windows上放一些限制。有人可以給我建議如何調試/修復它嗎? (沒有更低的緩衝區大小)
非常感謝!