작은 사용자의 텍스트 파일을 자주 열어 줘서 지금까지는 읽기/쓰기 액세스 또는 모든 충돌 문제가 발생하지 않은 작은 프로그램을 작성했습니다. 파일은 내가 제어 할 수없는 다른 소프트웨어에서 선택되며 문자열로 전달됩니다.CreateFile이 네트워크 공유를 통해 파일을 열지 못하는 이유는 무엇입니까?
매핑 된 네트워크 드라이브에서 파일을 열려고하면 "지정한 경로를 찾을 수 없습니다"오류 (GetLastError() = 3)가 발생합니다.
전화 번호는 *iNCfileName = "z:\\Validation\\Sample Files\\1_1-4 120MM.CC"
입니다. 여기서 Z는 Google 도메인의 매핑 된 폴더입니다.
iNCfile = CreateFile(iNCfileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
if (iNCfile == INVALID_HANDLE_VALUE)
{
string msg; // lots of better ways to get this printed ... but ...
dw = GetLastError();
msg = iNCfileName;
msg += ": ";
msg += _com_error(dw).ErrorMessage();
print_error(dw , (char*)msg.c_str());
return 102;
}
로컬 하드 드라이브에 파일을 복사하면 파일이 내 프로그램에서 열립니다. 또한 매핑 된 드라이브의 메모장에서 열립니다.
매핑 된 표현 "Z : \ whatever.txt"와 실제 파일 이름 (\ mydomain \ Validation \ S .... ") 사이에 문제가있을 수 있습니까?
만약 그렇다면 어떻게 프로그램 방식으로 하나에서 다른 것으로 변환 할 수 있습니까? (도메인/공유 이름을 미리 알지 못한다고 가정)
VS2010을 사용하면 응용 프로그램이 Win XP 컴퓨터에서 실행됩니다.
관련이 : my follow up question
나중에 반복하십시오 : "GetLastError()'를 사용합니다." – 0xC0000022L
GetLastError()를 호출하여 특정 실패 값을 얻습니다. –
'GetLastError()'외에도'iNCfileName'의 채우기를 표시 할 수 있습니까? – hmjd