Fixes
This commit is contained in:
@@ -635,12 +635,13 @@ private:
|
|||||||
NTSTATUS ret = STATUS_SUCCESS;
|
NTSTATUS ret = STATUS_SUCCESS;
|
||||||
|
|
||||||
auto siaFileTree = GetFileTree();
|
auto siaFileTree = GetFileTree();
|
||||||
auto siaFile = siaFileTree ? siaFileTree->GetFile(openFileInfo->SiaPath) : nullptr;
|
auto siaFile = siaFileTree && openFileInfo ? siaFileTree->GetFile(openFileInfo->SiaPath) : nullptr;
|
||||||
|
SString cachFileLocation = openFileInfo ? openFileInfo->CacheFilePath : FilePath(GetCacheLocation(), fileName);
|
||||||
|
|
||||||
HANDLE tempHandle = openFileInfo->FileHandle;
|
HANDLE tempHandle = openFileInfo ? openFileInfo->FileHandle : nullptr;
|
||||||
if (!siaFile && (!tempHandle || (tempHandle == INVALID_HANDLE_VALUE)))
|
if (!siaFile && (!tempHandle || (tempHandle == INVALID_HANDLE_VALUE)))
|
||||||
{
|
{
|
||||||
tempHandle = ::CreateFile(&openFileInfo->CacheFilePath[0], GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr);
|
tempHandle = ::CreateFile(&cachFileLocation[0], GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, 0, nullptr);
|
||||||
if (tempHandle == INVALID_HANDLE_VALUE)
|
if (tempHandle == INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
ret = DokanNtStatusFromWin32(::GetLastError());
|
ret = DokanNtStatusFromWin32(::GetLastError());
|
||||||
@@ -653,7 +654,7 @@ private:
|
|||||||
|
|
||||||
if (ret == STATUS_SUCCESS)
|
if (ret == STATUS_SUCCESS)
|
||||||
{
|
{
|
||||||
if (openFileInfo->Dummy)
|
if (openFileInfo && openFileInfo->Dummy)
|
||||||
{
|
{
|
||||||
LARGE_INTEGER li = { 0 };
|
LARGE_INTEGER li = { 0 };
|
||||||
li.QuadPart = siaFile->GetFileSize();
|
li.QuadPart = siaFile->GetFileSize();
|
||||||
@@ -668,12 +669,12 @@ private:
|
|||||||
// in this case, FindFirstFile can't get directory information
|
// in this case, FindFirstFile can't get directory information
|
||||||
if (wcscmp(fileName, L"\\") == 0)
|
if (wcscmp(fileName, L"\\") == 0)
|
||||||
{
|
{
|
||||||
handleFileInfo->dwFileAttributes = ::GetFileAttributes(&openFileInfo->CacheFilePath[0]);
|
handleFileInfo->dwFileAttributes = ::GetFileAttributes(&cachFileLocation[0]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
WIN32_FIND_DATA find = { 0 };
|
WIN32_FIND_DATA find = { 0 };
|
||||||
HANDLE findHandle = ::FindFirstFile(&openFileInfo->CacheFilePath[0], &find);
|
HANDLE findHandle = ::FindFirstFile(&cachFileLocation[0], &find);
|
||||||
if (findHandle == INVALID_HANDLE_VALUE)
|
if (findHandle == INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
DWORD error = ::GetLastError();
|
DWORD error = ::GetLastError();
|
||||||
|
Reference in New Issue
Block a user