1.9.1
This commit is contained in:
parent
41363e8159
commit
7609b99951
|
@ -21,8 +21,8 @@
|
||||||
#ifndef _MY_VERSION_H
|
#ifndef _MY_VERSION_H
|
||||||
#define _MY_VERSION_H
|
#define _MY_VERSION_H
|
||||||
|
|
||||||
#define MY_VERSION_BINARY 5,64,0
|
#define MY_VERSION_BINARY 5,64,1
|
||||||
#define MY_VERSION_STRING "5.64.0"
|
#define MY_VERSION_STRING "5.64.1"
|
||||||
#define MY_ABI_VERSION 0x56000
|
#define MY_ABI_VERSION 0x56000
|
||||||
|
|
||||||
// These #defines are used by either Resource Compiler or NSIS installer
|
// These #defines are used by either Resource Compiler or NSIS installer
|
||||||
|
|
|
@ -185,7 +185,7 @@ _FX int Debug_Init(void)
|
||||||
NtRaiseHardError = (P_NtRaiseHardError)
|
NtRaiseHardError = (P_NtRaiseHardError)
|
||||||
GetProcAddress(Dll_Ntdll, "NtRaiseHardError");
|
GetProcAddress(Dll_Ntdll, "NtRaiseHardError");
|
||||||
|
|
||||||
SBIEDLL_HOOK(Debug_,NtRaiseHardError);
|
//SBIEDLL_HOOK(Debug_,NtRaiseHardError);
|
||||||
|
|
||||||
|
|
||||||
RtlSetLastWin32Error = (P_RtlSetLastWin32Error)
|
RtlSetLastWin32Error = (P_RtlSetLastWin32Error)
|
||||||
|
|
|
@ -908,10 +908,13 @@ _FX NTSTATUS File_OpenForMerge(
|
||||||
// true directory we parse the rule list and construct a cached dummy directory
|
// true directory we parse the rule list and construct a cached dummy directory
|
||||||
//
|
//
|
||||||
|
|
||||||
if (use_rule_specificity && File_MergeDummy(TruePath, merge->true_ptr, &merge->file_mask) == STATUS_SUCCESS) {
|
if (use_rule_specificity) {
|
||||||
|
|
||||||
merge->true_ptr->handle = NULL;
|
if (File_MergeDummy(TruePath, merge->true_ptr, &merge->file_mask) == STATUS_SUCCESS) {
|
||||||
status = STATUS_SUCCESS;
|
|
||||||
|
merge->true_ptr->handle = NULL;
|
||||||
|
status = STATUS_SUCCESS;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1415,10 +1418,11 @@ _FX NTSTATUS File_MergeDummy(
|
||||||
|
|
||||||
WCHAR* FakePath = Dll_AllocTemp(TruePathLen * sizeof(WCHAR) + 1 + name_len * sizeof(WCHAR) + 10);
|
WCHAR* FakePath = Dll_AllocTemp(TruePathLen * sizeof(WCHAR) + 1 + name_len * sizeof(WCHAR) + 10);
|
||||||
|
|
||||||
wmemcpy(FakePath, TruePath, TruePathLen * sizeof(WCHAR));
|
wmemcpy(FakePath, TruePath, TruePathLen);
|
||||||
wcscat(FakePath, L"\\");
|
FakePath[TruePathLen++] = L'\\';
|
||||||
end = wcschr(FakePath, L'\0');
|
FakePath[TruePathLen++] = L'\0';
|
||||||
wmemcpy(end, ptr, name_len * sizeof(WCHAR));
|
end = &FakePath[TruePathLen];
|
||||||
|
wmemcpy(end, ptr, name_len);
|
||||||
end[name_len] = L'\0';
|
end[name_len] = L'\0';
|
||||||
|
|
||||||
FILE_NETWORK_OPEN_INFORMATION info;
|
FILE_NETWORK_OPEN_INFORMATION info;
|
||||||
|
@ -1436,6 +1440,7 @@ _FX NTSTATUS File_MergeDummy(
|
||||||
memcpy(info_ptr->FileName, ptr, info_ptr->FileNameLength);
|
memcpy(info_ptr->FileName, ptr, info_ptr->FileNameLength);
|
||||||
info_ptr->FileName[info_ptr->FileNameLength] = L'\0';
|
info_ptr->FileName[info_ptr->FileNameLength] = L'\0';
|
||||||
|
|
||||||
|
info_ptr->CreationTime = info.CreationTime;
|
||||||
info_ptr->LastAccessTime = info.LastAccessTime;
|
info_ptr->LastAccessTime = info.LastAccessTime;
|
||||||
info_ptr->LastWriteTime = info.LastWriteTime;
|
info_ptr->LastWriteTime = info.LastWriteTime;
|
||||||
info_ptr->ChangeTime = info.ChangeTime;
|
info_ptr->ChangeTime = info.ChangeTime;
|
||||||
|
@ -1443,6 +1448,17 @@ _FX NTSTATUS File_MergeDummy(
|
||||||
info_ptr->EndOfFile = info.EndOfFile;
|
info_ptr->EndOfFile = info.EndOfFile;
|
||||||
info_ptr->FileAttributes = info.FileAttributes;
|
info_ptr->FileAttributes = info.FileAttributes;
|
||||||
|
|
||||||
|
|
||||||
|
//ULONG NextEntryOffset;
|
||||||
|
//ULONG FileIndex;
|
||||||
|
//ULONG EaInformationLength;
|
||||||
|
//CCHAR ShortNameLength;
|
||||||
|
//WCHAR ShortName[12];
|
||||||
|
//LARGE_INTEGER FileId;
|
||||||
|
|
||||||
|
|
||||||
|
info_ptr->FileId.QuadPart = -1;
|
||||||
|
|
||||||
PrevEntry = &info_ptr->NextEntryOffset;
|
PrevEntry = &info_ptr->NextEntryOffset;
|
||||||
|
|
||||||
info_ptr->NextEntryOffset = sizeof(FILE_ID_BOTH_DIR_INFORMATION) + info_ptr->FileNameLength + sizeof(WCHAR) + 16; // +16 some buffer space
|
info_ptr->NextEntryOffset = sizeof(FILE_ID_BOTH_DIR_INFORMATION) + info_ptr->FileNameLength + sizeof(WCHAR) + 16; // +16 some buffer space
|
||||||
|
@ -1706,6 +1722,12 @@ _FX NTSTATUS File_GetMergedInformation(
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//if (ptr_info->FileId.QuadPart == -1) {
|
||||||
|
// WCHAR msg[1024];
|
||||||
|
// Sbie_snwprintf(msg, 1024, L"File_MergeDummy simulate %s", ptr_info->FileName);
|
||||||
|
// SbieApi_MonitorPutMsg(MONITOR_OTHER | MONITOR_TRACE, msg);
|
||||||
|
//}
|
||||||
|
|
||||||
if (File_Delete_v2) {
|
if (File_Delete_v2) {
|
||||||
|
|
||||||
if ((merge->true_ptr && ptr_info == merge->true_ptr->info) // is in true path
|
if ((merge->true_ptr && ptr_info == merge->true_ptr->info) // is in true path
|
||||||
|
|
|
@ -755,10 +755,11 @@ _FX NTSTATUS Key_MergeCacheDummys(KEY_MERGE *merge, const WCHAR *TruePath)
|
||||||
|
|
||||||
WCHAR* FakePath = Dll_AllocTemp(TruePathLen * sizeof(WCHAR) + 1 + name_len * sizeof(WCHAR) + 10);
|
WCHAR* FakePath = Dll_AllocTemp(TruePathLen * sizeof(WCHAR) + 1 + name_len * sizeof(WCHAR) + 10);
|
||||||
|
|
||||||
wmemcpy(FakePath, TruePath, TruePathLen * sizeof(WCHAR));
|
wmemcpy(FakePath, TruePath, TruePathLen);
|
||||||
wcscat(FakePath, L"\\");
|
FakePath[TruePathLen++] = L'\\';
|
||||||
end = wcschr(FakePath, L'\0');
|
FakePath[TruePathLen++] = L'\0';
|
||||||
wmemcpy(end, ptr, name_len * sizeof(WCHAR));
|
end = &FakePath[TruePathLen];
|
||||||
|
wmemcpy(end, ptr, name_len);
|
||||||
end[name_len] = L'\0';
|
end[name_len] = L'\0';
|
||||||
|
|
||||||
HANDLE KeyHandle;
|
HANDLE KeyHandle;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#define VERSION_MJR 1
|
#define VERSION_MJR 1
|
||||||
#define VERSION_MIN 9
|
#define VERSION_MIN 9
|
||||||
#define VERSION_REV 0
|
#define VERSION_REV 1
|
||||||
#define VERSION_UPD 0
|
#define VERSION_UPD 0
|
||||||
|
|
||||||
#ifndef STR
|
#ifndef STR
|
||||||
|
|
Loading…
Reference in New Issue