| 742 | } |
| 743 | |
| 744 | static 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 | |
| 791 | static NTSTATUS DOKAN_CALLBACK CryptReadFile(LPCWSTR FileName, LPVOID Buffer, |
| 792 | DWORD BufferLength, |
nothing calls this directly
no test coverage detected