MCPcopy Create free account
hub / github.com/bailey27/cppcryptfs / DOKAN_CALLBACK CryptCleanup

Function DOKAN_CALLBACK CryptCleanup

cppcryptfs/dokan/cryptdokan.cpp:744–789  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

742}
743
744static void DOKAN_CALLBACK CryptCleanup(LPCWSTR FileName,
745 PDOKAN_FILE_INFO DokanFileInfo) {
746 FileNameEnc filePath(DokanFileInfo, FileName);
747
748 if (DokanFileInfo->Context) {
749 DbgPrint(L"Cleanup: %s, %x\n\n", FileName, (DWORD)DokanFileInfo->Context);
750 if ((HANDLE)DokanFileInfo->Context != INVALID_HANDLE_VALUE) {
751 GetContext()->m_open_handles.erase((HANDLE)DokanFileInfo->Context);
752 CloseHandle((HANDLE)(DokanFileInfo->Context));
753 if (!DokanFileInfo->IsDirectory)
754 GetContext()->m_openfiles.CloseFile(FileName, (HANDLE)DokanFileInfo->Context);
755 }
756 DokanFileInfo->Context = 0;
757 } else {
758 DbgPrint(L"Cleanup: %s\n\tinvalid handle\n\n", FileName);
759 }
760
761 if (DokanFileInfo->DeletePending) {
762 DbgPrint(L"\tDeleteOnClose\n");
763 if (DokanFileInfo->IsDirectory) {
764 DbgPrint(L" DeleteDirectory ");
765 if (!delete_directory(GetContext(), filePath)) {
766 DbgPrint(L"error code = %d\n\n", GetLastError());
767 } else {
768 if (GetContext()->IsCaseInsensitive()) {
769 if (!GetContext()->m_case_cache.purge(FileName)) {
770 DbgPrint(L"delete failed to purge dir %s\n", FileName);
771 }
772 }
773 DbgPrint(L"success\n\n");
774 }
775 } else {
776 DbgPrint(L" DeleteFile ");
777 if (!delete_file(GetContext(), filePath)) {
778 DbgPrint(L" error code = %d\n\n", GetLastError());
779 } else {
780 if (GetContext()->IsCaseInsensitive()) {
781 if (!GetContext()->m_case_cache.remove(filePath.CorrectCasePath())) {
782 DbgPrint(L"delete failed to remove %s from case cache\n", FileName);
783 }
784 }
785 DbgPrint(L"success\n\n");
786 }
787 }
788 }
789}
790
791static NTSTATUS DOKAN_CALLBACK CryptReadFile(LPCWSTR FileName, LPVOID Buffer,
792 DWORD BufferLength,

Callers

nothing calls this directly

Calls 9

DbgPrintFunction · 0.85
delete_directoryFunction · 0.85
delete_fileFunction · 0.85
eraseMethod · 0.80
CloseFileMethod · 0.80
IsCaseInsensitiveMethod · 0.80
purgeMethod · 0.80
CorrectCasePathMethod · 0.80
removeMethod · 0.45

Tested by

no test coverage detected