Fixed timeout
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user