FILE_ATTRIBUTE_TEMPORARY
개의 파일이 있습니다. 우선 내가하고 싶은 것은 다음과 같습니다.동일한 프로세스에서만 임시 파일을 여러 번 열었습니다.
파일 이름을 사용하는 DLL이 있고 그 파일을 내부적으로 열고 읽습니다. 나는이 파일이 어떻게 처리되는지를 모른다. 해당 DLL에 제공하려는 파일이 내 프로세스에 의해 만들어집니다. 임시 파일이어야하며 해당 데이터는 RAM에서만 보유해야하며 다른 프로세스에서 액세스해서는 안됩니다. 그래서 Win32 함수 CreateFile()
을 FILE_ATTRIBUTE_TEMPORARY
과 FILE_FLAG_DELETE_ON_CLOSE
과 함께 사용합니다. 이것은 지금까지 작동합니다.
파일을 두 번 액세스 할 수 있는지, 아직 열어 둔 지 테스트하는 곳의 테스 코드가 있습니다. 여기에 :
HANDLE WINHandle = CreateFile("TempFileWIN.txt", (GENERIC_WRITE | GENERIC_READ) ,(FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE), 0, CREATE_ALWAYS, (FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE), 0);
ifstream ifs("TempFileWIN.txt", (ios::in | ios::trunc));
if(ifs.is_open())
{
cout << "Success!" << endl;
}
else if(ifs.fail())
{
cout << "Failed!" << endl;
}
파일을 스트림으로 열 수 있는지 테스트하기 위해 fstream을 사용하고 있습니다. 그 코드는 작동하지 않습니다. 출력은 "Failed!"입니다. 두 번째로 CreateFile을 사용하여 파일을 열 수 있음을 알고 있습니다. 나는 그것을 조사했다. 그러나 (예를 들어) fstream과 함께 작동하는 외부 DLL로 파일을 열 수 있는지 알고 싶습니다.
이 문제로 저를 도울 수 있기를 바랍니다. 감사합니다.
편집 : 아마도 더 나은 질문은 내 프로세스에 파일을 잠그고 다른 프로세스 (내 프로세스가 종료 된 경우에도)에 액세스 할 수 없다는 것입니다. 이 파일은 C++ fstream 객체로 열 수 있어야합니다.