1
0

Fixed timeout

This commit is contained in:
Scott E. Graves
2017-03-31 23:09:50 -05:00
parent ab69cf82f9
commit 7e3c4e13e1

View File

@@ -749,7 +749,7 @@ private:
CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DokanReadFile(filePath))); CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DokanReadFile(filePath)));
auto openFileInfo = reinterpret_cast<OpenFileInfo*>(dokanFileInfo->Context); auto openFileInfo = reinterpret_cast<OpenFileInfo*>(dokanFileInfo->Context);
if (openFileInfo->Dummy) if (openFileInfo && openFileInfo->Dummy)
{ {
// TODO taking too long // TODO taking too long
if (!AddFileToCache(*openFileInfo, dokanFileInfo)) if (!AddFileToCache(*openFileInfo, dokanFileInfo))
@@ -758,7 +758,7 @@ private:
} }
} }
HANDLE tempHandle = openFileInfo->FileHandle; HANDLE tempHandle = openFileInfo ? openFileInfo->FileHandle : 0;
BOOL opened = FALSE; BOOL opened = FALSE;
if (!tempHandle || (tempHandle == INVALID_HANDLE_VALUE)) if (!tempHandle || (tempHandle == INVALID_HANDLE_VALUE))
{ {
@@ -808,7 +808,7 @@ private:
auto openFileInfo = reinterpret_cast<OpenFileInfo*>(dokanFileInfo->Context); auto openFileInfo = reinterpret_cast<OpenFileInfo*>(dokanFileInfo->Context);
BOOL opened = FALSE; BOOL opened = FALSE;
HANDLE tempHandle = openFileInfo->FileHandle; HANDLE tempHandle = openFileInfo ? openFileInfo->FileHandle : 0;
if (!tempHandle || (tempHandle == INVALID_HANDLE_VALUE)) if (!tempHandle || (tempHandle == INVALID_HANDLE_VALUE))
{ {
tempHandle = ::CreateFile(&filePath[0], GENERIC_WRITE, FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr); tempHandle = ::CreateFile(&filePath[0], GENERIC_WRITE, FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr);
@@ -888,6 +888,7 @@ private:
if (::WriteFile(tempHandle, buffer, bytesToWrite, bytesWritten, nullptr)) if (::WriteFile(tempHandle, buffer, bytesToWrite, bytesWritten, nullptr))
{ {
if (openFileInfo)
openFileInfo->Changed = true; openFileInfo->Changed = true;
} }
else else
@@ -898,9 +899,11 @@ private:
return DokanNtStatusFromWin32(error); return DokanNtStatusFromWin32(error);
} }
// close the file when it is reopene bxkjuoqoa'qq d
if (opened) if (opened)
{
// TODO HandleSiaFileClose
CloseHandle(tempHandle); CloseHandle(tempHandle);
}
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
@@ -914,7 +917,7 @@ private:
CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DokanSetEndOfFile(filePath))); CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DokanSetEndOfFile(filePath)));
auto openFileInfo = reinterpret_cast<OpenFileInfo*>(dokanFileInfo->Context); auto openFileInfo = reinterpret_cast<OpenFileInfo*>(dokanFileInfo->Context);
if (!openFileInfo->FileHandle || (openFileInfo->FileHandle == INVALID_HANDLE_VALUE)) if (!openFileInfo || !openFileInfo->FileHandle || (openFileInfo->FileHandle == INVALID_HANDLE_VALUE))
{ {
ret = STATUS_INVALID_HANDLE; ret = STATUS_INVALID_HANDLE;
} }
@@ -994,7 +997,7 @@ private:
CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DokanFlushFileBuffers(filePath))); CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DokanFlushFileBuffers(filePath)));
auto openFileInfo = reinterpret_cast<OpenFileInfo*>(dokanFileInfo->Context); auto openFileInfo = reinterpret_cast<OpenFileInfo*>(dokanFileInfo->Context);
if (!openFileInfo->FileHandle || (openFileInfo->FileHandle == INVALID_HANDLE_VALUE)) if (!openFileInfo || !openFileInfo->FileHandle || (openFileInfo->FileHandle == INVALID_HANDLE_VALUE))
{ {
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
@@ -1065,7 +1068,7 @@ private:
{ {
ret = STATUS_ACCESS_DENIED; ret = STATUS_ACCESS_DENIED;
} }
else if (openFileInfo->FileHandle && (openFileInfo->FileHandle != INVALID_HANDLE_VALUE)) else if (openFileInfo && openFileInfo->FileHandle && (openFileInfo->FileHandle != INVALID_HANDLE_VALUE))
{ {
FILE_DISPOSITION_INFO fdi; FILE_DISPOSITION_INFO fdi;
fdi.DeleteFile = dokanFileInfo->DeleteOnClose; fdi.DeleteFile = dokanFileInfo->DeleteOnClose;
@@ -1088,7 +1091,7 @@ private:
CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DokanMoveFileW(filePath, newFilePath))); CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DokanMoveFileW(filePath, newFilePath)));
auto openFileInfo = reinterpret_cast<OpenFileInfo*>(dokanFileInfo->Context); auto openFileInfo = reinterpret_cast<OpenFileInfo*>(dokanFileInfo->Context);
if (!openFileInfo->FileHandle || (openFileInfo->FileHandle == INVALID_HANDLE_VALUE)) if (!openFileInfo || !openFileInfo->FileHandle || (openFileInfo->FileHandle == INVALID_HANDLE_VALUE))
{ {
ret = STATUS_INVALID_HANDLE; ret = STATUS_INVALID_HANDLE;
} }
@@ -1204,7 +1207,7 @@ private:
CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DokanSetFileSecurityW(filePath))); CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DokanSetFileSecurityW(filePath)));
auto openFileInfo = reinterpret_cast<OpenFileInfo*>(dokanFileInfo->Context); auto openFileInfo = reinterpret_cast<OpenFileInfo*>(dokanFileInfo->Context);
if (!openFileInfo->FileHandle || (openFileInfo->FileHandle == INVALID_HANDLE_VALUE)) if (!openFileInfo || !openFileInfo->FileHandle || (openFileInfo->FileHandle == INVALID_HANDLE_VALUE))
{ {
return STATUS_INVALID_HANDLE; return STATUS_INVALID_HANDLE;
} }
@@ -1226,7 +1229,7 @@ private:
CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DokanSetFileTime(filePath))); CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DokanSetFileTime(filePath)));
auto openFileInfo = reinterpret_cast<OpenFileInfo*>(dokanFileInfo->Context); auto openFileInfo = reinterpret_cast<OpenFileInfo*>(dokanFileInfo->Context);
if (!openFileInfo->FileHandle || (openFileInfo->FileHandle == INVALID_HANDLE_VALUE)) if (!openFileInfo || !openFileInfo->FileHandle || (openFileInfo->FileHandle == INVALID_HANDLE_VALUE))
{ {
return STATUS_INVALID_HANDLE; return STATUS_INVALID_HANDLE;
} }
@@ -1248,7 +1251,7 @@ private:
CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DokanSetAllocationSize(filePath))); CEventSystem::EventSystem.NotifyEvent(CreateSystemEvent(DokanSetAllocationSize(filePath)));
auto openFileInfo = reinterpret_cast<OpenFileInfo*>(dokanFileInfo->Context); auto openFileInfo = reinterpret_cast<OpenFileInfo*>(dokanFileInfo->Context);
if (!openFileInfo->FileHandle || (openFileInfo->FileHandle == INVALID_HANDLE_VALUE)) if (!openFileInfo || !openFileInfo->FileHandle || (openFileInfo->FileHandle == INVALID_HANDLE_VALUE))
{ {
ret = STATUS_INVALID_HANDLE; ret = STATUS_INVALID_HANDLE;
} }