mirror of
https://github.com/JKornev/hidden
synced 2024-06-25 16:38:05 +00:00
Added path conversion to NT path to the FS filter interface
This commit is contained in:
parent
1fdfa70156
commit
184312875d
@ -356,7 +356,7 @@ NTSTATUS IrpDeviceControlHandler(PDEVICE_OBJECT DeviceObject, PIRP Irp)
|
|||||||
outputData = (PVOID)((UINT_PTR)outputBuffer + sizeof(result));
|
outputData = (PVOID)((UINT_PTR)outputBuffer + sizeof(result));
|
||||||
outputDataMaxSize = outputBufferMaxSize - sizeof(result);
|
outputDataMaxSize = outputBufferMaxSize - sizeof(result);
|
||||||
|
|
||||||
// Important Limitation:
|
// Important limitation:
|
||||||
// Because both input (inputBuffer) and output data (outputData) are located in the same buffer there is a limitation for the output
|
// Because both input (inputBuffer) and output data (outputData) are located in the same buffer there is a limitation for the output
|
||||||
// buffer usage. When a ioctl handler is executing, it can use the input buffer only until first write to the output buffer, because
|
// buffer usage. When a ioctl handler is executing, it can use the input buffer only until first write to the output buffer, because
|
||||||
// when you put data to the output buffer you can overwrite data in input buffer. Therefore if you gonna use both an input and output
|
// when you put data to the output buffer you can overwrite data in input buffer. Therefore if you gonna use both an input and output
|
||||||
@ -390,7 +390,7 @@ NTSTATUS IrpDeviceControlHandler(PDEVICE_OBJECT DeviceObject, PIRP Irp)
|
|||||||
case HID_IOCTL_REMOVE_ALL_OBJECTS:
|
case HID_IOCTL_REMOVE_ALL_OBJECTS:
|
||||||
result.status = RemoveAllPsObjects((PHid_RemoveAllPsObjectsPacket)inputBuffer, (USHORT)inputBufferSize);
|
result.status = RemoveAllPsObjects((PHid_RemoveAllPsObjectsPacket)inputBuffer, (USHORT)inputBufferSize);
|
||||||
break;
|
break;
|
||||||
//
|
// Other
|
||||||
default:
|
default:
|
||||||
DbgPrint("FsFilter1!" __FUNCTION__ ": unknown IOCTL code:%08x\n", ioctl);
|
DbgPrint("FsFilter1!" __FUNCTION__ ": unknown IOCTL code:%08x\n", ioctl);
|
||||||
status = STATUS_INVALID_PARAMETER;
|
status = STATUS_INVALID_PARAMETER;
|
||||||
|
@ -2,14 +2,10 @@
|
|||||||
+ Добавить поддержку фильтрации открытия и создания key
|
+ Добавить поддержку фильтрации открытия и создания key
|
||||||
+ Добавить поддержку фильтрации перечисления key
|
+ Добавить поддержку фильтрации перечисления key
|
||||||
+ Добавить поддержку фильтрации перечисления value
|
+ Добавить поддержку фильтрации перечисления value
|
||||||
- Почистить Exclude List
|
|
||||||
+ Добавить в Exclude List поддержку case insensetive crc32 (если возможно, например русские буквы) (*Нет необхлжимости)
|
|
||||||
- Добавить в Exclude List для файлов такую же лексическую сортировку как и в реестру, возможно обьеденить ф-и
|
|
||||||
- Переписать всё на основе AVL или других buildin generic trees
|
|
||||||
+ Вынести fs filter и reg filter в отдельные файлы
|
+ Вынести fs filter и reg filter в отдельные файлы
|
||||||
+ Протестировать фишки с ObRegisterCallback
|
+ Протестировать фишки с ObRegisterCallback
|
||||||
+ Стерание всех флагов
|
+ Стерание всех флагов
|
||||||
- Реализовать PsMonitor со всеми вытекающими
|
+ Реализовать PsMonitor со всеми вытекающими
|
||||||
+ Реализовать рабочий прототип
|
+ Реализовать рабочий прототип
|
||||||
+ Для Exclude
|
+ Для Exclude
|
||||||
+ Для Protected
|
+ Для Protected
|
||||||
@ -18,22 +14,27 @@
|
|||||||
+ Реализовать интерфейс для File & Reg мониторов
|
+ Реализовать интерфейс для File & Reg мониторов
|
||||||
+ Вынести Process Table в отдельный файл
|
+ Вынести Process Table в отдельный файл
|
||||||
+ Переименовать Process Tree в Process Table
|
+ Переименовать Process Tree в Process Table
|
||||||
- Протестировать интерфейсы
|
- Протестировать интерфейсы
|
||||||
+ Добавить в HiddenCLI загрузку excluded и protected процессов
|
+ Добавить в HiddenCLI загрузку excluded и protected процессов
|
||||||
- Добавить проект HiddenTest
|
+ Добавить проект HiddenTest
|
||||||
- Реализовать тесты в проекте HiddenTest
|
- Реализовать тесты в проекте HiddenTest
|
||||||
- Реализовать конвертирование NT path в кернел путь \\Deivce\\HardDisk..
|
+ FS monitor
|
||||||
+ Портировать в PsMonitor
|
|
||||||
- Портировать в Device API
|
|
||||||
+ FS filter
|
|
||||||
- Reg filter
|
- Reg filter
|
||||||
|
- Ps filter
|
||||||
|
- Почистить Exclude List
|
||||||
|
+ Добавить в Exclude List поддержку case insensetive crc32 (если возможно, например русские буквы) (*Нет необхлжимости)
|
||||||
|
- Добавить в Exclude List для файлов такую же лексическую сортировку как и в реестру, возможно обьеденить ф-и
|
||||||
|
- Переписать всё на основе AVL или других buildin generic trees
|
||||||
|
- Реализовать конвертирование пути в пути драйвера
|
||||||
|
- Ps monitor
|
||||||
|
+ FS filter
|
||||||
|
- Reg filter
|
||||||
+ Реализовать RemoveAllExcludeListEntries
|
+ Реализовать RemoveAllExcludeListEntries
|
||||||
- Реализовать IOCTL протокол управления
|
- Реализовать IOCTL протокол управления
|
||||||
- Реализовать usermode библиотеку для работы с IOCTL API
|
+ Реализовать usermode библиотеку для работы с IOCTL API
|
||||||
- Реализовать программу управления драйвером, средствами IOCTL API
|
- Реализовать программу управления драйвером, средствами IOCTL API
|
||||||
+ Слинковать с IOCTL API lib
|
+ Слинковать с IOCTL API lib
|
||||||
|
- Портировать драйвер под архитектуру x64
|
||||||
- Проверить работу на x64
|
|
||||||
- Залить проект на Git
|
- Залить проект на Git
|
||||||
+ Переименовать проект драйвера в Hidden
|
+ Переименовать проект драйвера в Hidden
|
||||||
- Привести в порядок все версии билда Release, Debug, ...
|
- Привести в порядок все версии билда Release, Debug, ...
|
||||||
@ -42,5 +43,7 @@
|
|||||||
- Отреверсить установщик VMWare tools
|
- Отреверсить установщик VMWare tools
|
||||||
- Сокрытие VMBox Tools
|
- Сокрытие VMBox Tools
|
||||||
- Отреверсить установщик VMBox tools
|
- Отреверсить установщик VMBox tools
|
||||||
|
- Реализовать поддержку вкл\выкл драйвера
|
||||||
|
- Реализовать steals mode
|
||||||
- Насодить на ETL и DbgPrintEx
|
- Насодить на ETL и DbgPrintEx
|
||||||
|
|
||||||
|
@ -13,11 +13,42 @@ typedef struct _HidContextInternal {
|
|||||||
HANDLE hdevice;
|
HANDLE hdevice;
|
||||||
} HidContextInternal, *PHidContextInternal;
|
} HidContextInternal, *PHidContextInternal;
|
||||||
|
|
||||||
|
typedef struct _LSA_UNICODE_STRING {
|
||||||
|
USHORT Length;
|
||||||
|
USHORT MaximumLength;
|
||||||
|
PWSTR Buffer;
|
||||||
|
} LSA_UNICODE_STRING, *PLSA_UNICODE_STRING, UNICODE_STRING, *PUNICODE_STRING;
|
||||||
|
|
||||||
|
typedef struct _RTL_RELATIVE_NAME {
|
||||||
|
UNICODE_STRING RelativeName;
|
||||||
|
HANDLE ContainingDirectory;
|
||||||
|
void* CurDirRef;
|
||||||
|
} RTL_RELATIVE_NAME, *PRTL_RELATIVE_NAME;
|
||||||
|
|
||||||
|
typedef BOOLEAN(NTAPI*RtlDosPathNameToRelativeNtPathName_U_Prototype)(
|
||||||
|
_In_ PCWSTR DosFileName,
|
||||||
|
_Out_ PUNICODE_STRING NtFileName,
|
||||||
|
_Out_opt_ PWSTR* FilePath,
|
||||||
|
_Out_opt_ PRTL_RELATIVE_NAME RelativeName
|
||||||
|
);
|
||||||
|
|
||||||
|
RtlDosPathNameToRelativeNtPathName_U_Prototype RtlDosPathNameToRelativeNtPathName_U = nullptr;
|
||||||
|
|
||||||
HidStatus Hid_Initialize(PHidContext pcontext)
|
HidStatus Hid_Initialize(PHidContext pcontext)
|
||||||
{
|
{
|
||||||
HANDLE hdevice = INVALID_HANDLE_VALUE;
|
HANDLE hdevice = INVALID_HANDLE_VALUE;
|
||||||
PHidContextInternal context;
|
PHidContextInternal context;
|
||||||
|
|
||||||
|
if (!RtlDosPathNameToRelativeNtPathName_U)
|
||||||
|
{
|
||||||
|
*(FARPROC*)&RtlDosPathNameToRelativeNtPathName_U = GetProcAddress(
|
||||||
|
GetModuleHandleW(L"ntdll.dll"),
|
||||||
|
"RtlDosPathNameToRelativeNtPathName_U"
|
||||||
|
);
|
||||||
|
if (!RtlDosPathNameToRelativeNtPathName_U)
|
||||||
|
return HID_SET_STATUS(FALSE, GetLastError());
|
||||||
|
}
|
||||||
|
|
||||||
hdevice = CreateFileW(
|
hdevice = CreateFileW(
|
||||||
DEVICE_WIN32_NAME,
|
DEVICE_WIN32_NAME,
|
||||||
GENERIC_READ | GENERIC_WRITE,
|
GENERIC_READ | GENERIC_WRITE,
|
||||||
@ -50,7 +81,61 @@ void Hid_Destroy(HidContext context)
|
|||||||
free(cntx);
|
free(cntx);
|
||||||
}
|
}
|
||||||
|
|
||||||
HidStatus SendIoctl_HideObjectPacket(PHidContextInternal context, wchar_t* path, unsigned short type, HidObjId* objId)
|
bool ConvertToNtPath(const wchar_t* path, wchar_t* normalized, size_t normalizedLen)
|
||||||
|
{
|
||||||
|
UNICODE_STRING ntPath;
|
||||||
|
DWORD size;
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
size = GetFullPathNameW(path, normalizedLen, normalized, NULL);
|
||||||
|
if (size == 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
memset(&ntPath, 0, sizeof(ntPath));
|
||||||
|
|
||||||
|
if (RtlDosPathNameToRelativeNtPathName_U(normalized, &ntPath, NULL, NULL) == FALSE)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (normalizedLen * sizeof(wchar_t) > ntPath.Length)
|
||||||
|
{
|
||||||
|
memcpy(normalized, ntPath.Buffer, ntPath.Length);
|
||||||
|
normalized[ntPath.Length / sizeof(wchar_t)] = L'\0';
|
||||||
|
result = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
HeapFree(GetProcessHeap(), 0, ntPath.Buffer);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
HidStatus AllocNormalizedPath(const wchar_t* path, wchar_t** normalized)
|
||||||
|
{
|
||||||
|
enum { NORMALIZATION_OVERHEAD = 32 };
|
||||||
|
wchar_t* buf;
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
len = wcslen(path) + NORMALIZATION_OVERHEAD;
|
||||||
|
|
||||||
|
buf = (wchar_t*)malloc(len * sizeof(wchar_t));
|
||||||
|
if (!buf)
|
||||||
|
return HID_SET_STATUS(FALSE, ERROR_NOT_ENOUGH_MEMORY);
|
||||||
|
|
||||||
|
if (!ConvertToNtPath(path, buf, len))
|
||||||
|
{
|
||||||
|
free(buf);
|
||||||
|
return HID_SET_STATUS(FALSE, ERROR_INVALID_DATA);
|
||||||
|
}
|
||||||
|
|
||||||
|
*normalized = buf;
|
||||||
|
return HID_SET_STATUS(TRUE, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FreeNormalizedPath(wchar_t* normalized)
|
||||||
|
{
|
||||||
|
free(normalized);
|
||||||
|
}
|
||||||
|
|
||||||
|
HidStatus SendIoctl_HideObjectPacket(PHidContextInternal context, const wchar_t* path, unsigned short type, HidObjId* objId)
|
||||||
{
|
{
|
||||||
PHid_HideObjectPacket hide;
|
PHid_HideObjectPacket hide;
|
||||||
Hid_StatusPacket result;
|
Hid_StatusPacket result;
|
||||||
@ -139,7 +224,7 @@ HidStatus SendIoctl_UnhideAllObjectsPacket(PHidContextInternal context, unsigned
|
|||||||
return HID_SET_STATUS(TRUE, 0);
|
return HID_SET_STATUS(TRUE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
HidStatus SendIoctl_AddPsObjectPacket(PHidContextInternal context, wchar_t* path, unsigned short type, HidPsInheritTypes inheritType, HidObjId* objId)
|
HidStatus SendIoctl_AddPsObjectPacket(PHidContextInternal context, const wchar_t* path, unsigned short type, HidPsInheritTypes inheritType, HidObjId* objId)
|
||||||
{
|
{
|
||||||
PHid_AddPsObjectPacket hide;
|
PHid_AddPsObjectPacket hide;
|
||||||
Hid_StatusPacket result;
|
Hid_StatusPacket result;
|
||||||
@ -245,7 +330,7 @@ HidStatus Hid_GetState(HidContext context, HidActiveState* pstate)
|
|||||||
|
|
||||||
// Registry hiding interface
|
// Registry hiding interface
|
||||||
|
|
||||||
HidStatus Hid_AddHiddenRegKey(HidContext context, wchar_t* regKey, HidObjId* objId)
|
HidStatus Hid_AddHiddenRegKey(HidContext context, const wchar_t* regKey, HidObjId* objId)
|
||||||
{
|
{
|
||||||
return SendIoctl_HideObjectPacket((PHidContextInternal)context, regKey, RegKeyObject, objId);
|
return SendIoctl_HideObjectPacket((PHidContextInternal)context, regKey, RegKeyObject, objId);
|
||||||
}
|
}
|
||||||
@ -260,7 +345,7 @@ HidStatus Hid_RemoveAllHiddenRegKeys(HidContext context)
|
|||||||
return SendIoctl_UnhideAllObjectsPacket((PHidContextInternal)context, RegKeyObject);
|
return SendIoctl_UnhideAllObjectsPacket((PHidContextInternal)context, RegKeyObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
HidStatus Hid_AddHiddenRegValue(HidContext context, wchar_t* regValue, HidObjId* objId)
|
HidStatus Hid_AddHiddenRegValue(HidContext context, const wchar_t* regValue, HidObjId* objId)
|
||||||
{
|
{
|
||||||
return SendIoctl_HideObjectPacket((PHidContextInternal)context, regValue, RegValueObject, objId);
|
return SendIoctl_HideObjectPacket((PHidContextInternal)context, regValue, RegValueObject, objId);
|
||||||
}
|
}
|
||||||
@ -277,9 +362,19 @@ HidStatus Hid_RemoveAllHiddenRegValues(HidContext context)
|
|||||||
|
|
||||||
// File system hiding interface
|
// File system hiding interface
|
||||||
|
|
||||||
HidStatus Hid_AddHiddenFile(HidContext context, wchar_t* filePath, HidObjId* objId)
|
HidStatus Hid_AddHiddenFile(HidContext context, const wchar_t* filePath, HidObjId* objId)
|
||||||
{
|
{
|
||||||
return SendIoctl_HideObjectPacket((PHidContextInternal)context, filePath, FsFileObject, objId);
|
HidStatus status;
|
||||||
|
wchar_t* normalized;
|
||||||
|
|
||||||
|
status = AllocNormalizedPath(filePath, &normalized);
|
||||||
|
if (!HID_STATUS_SUCCESSFUL(status))
|
||||||
|
return status;
|
||||||
|
|
||||||
|
status = SendIoctl_HideObjectPacket((PHidContextInternal)context, normalized, FsFileObject, objId);
|
||||||
|
FreeNormalizedPath(normalized);
|
||||||
|
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
HidStatus Hid_RemoveHiddenFile(HidContext context, HidObjId objId)
|
HidStatus Hid_RemoveHiddenFile(HidContext context, HidObjId objId)
|
||||||
@ -292,9 +387,19 @@ HidStatus Hid_RemoveAllHiddenFiles(HidContext context)
|
|||||||
return SendIoctl_UnhideAllObjectsPacket((PHidContextInternal)context, FsFileObject);
|
return SendIoctl_UnhideAllObjectsPacket((PHidContextInternal)context, FsFileObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
HidStatus Hid_AddHiddenDir(HidContext context, wchar_t* dirPath, HidObjId* objId)
|
HidStatus Hid_AddHiddenDir(HidContext context, const wchar_t* dirPath, HidObjId* objId)
|
||||||
{
|
{
|
||||||
return SendIoctl_HideObjectPacket((PHidContextInternal)context, dirPath, FsDirObject, objId);
|
HidStatus status;
|
||||||
|
wchar_t* normalized;
|
||||||
|
|
||||||
|
status = AllocNormalizedPath(dirPath, &normalized);
|
||||||
|
if (!HID_STATUS_SUCCESSFUL(status))
|
||||||
|
return status;
|
||||||
|
|
||||||
|
status = SendIoctl_HideObjectPacket((PHidContextInternal)context, normalized, FsDirObject, objId);
|
||||||
|
FreeNormalizedPath(normalized);
|
||||||
|
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
HidStatus Hid_RemoveHiddenDir(HidContext context, HidObjId objId)
|
HidStatus Hid_RemoveHiddenDir(HidContext context, HidObjId objId)
|
||||||
@ -309,7 +414,7 @@ HidStatus Hid_RemoveAllHiddenDirs(HidContext context)
|
|||||||
|
|
||||||
// Process exclude interface
|
// Process exclude interface
|
||||||
|
|
||||||
HidStatus Hid_AddExcludedImage(HidContext context, wchar_t* imagePath, HidPsInheritTypes inheritType, HidObjId* objId)
|
HidStatus Hid_AddExcludedImage(HidContext context, const wchar_t* imagePath, HidPsInheritTypes inheritType, HidObjId* objId)
|
||||||
{
|
{
|
||||||
return SendIoctl_AddPsObjectPacket((PHidContextInternal)context, imagePath, PsExcludedObject, inheritType, objId);
|
return SendIoctl_AddPsObjectPacket((PHidContextInternal)context, imagePath, PsExcludedObject, inheritType, objId);
|
||||||
}
|
}
|
||||||
@ -341,7 +446,7 @@ HidStatus Hid_RemoveExcludedState(HidContext context, HidProcId procId)
|
|||||||
|
|
||||||
// Process protect interface
|
// Process protect interface
|
||||||
|
|
||||||
HidStatus Hid_AddProtectedImage(HidContext context, wchar_t* imagePath, HidPsInheritTypes inheritType, HidObjId* objId)
|
HidStatus Hid_AddProtectedImage(HidContext context, const wchar_t* imagePath, HidPsInheritTypes inheritType, HidObjId* objId)
|
||||||
{
|
{
|
||||||
return SendIoctl_AddPsObjectPacket((PHidContextInternal)context, imagePath, PsProtectedObject, inheritType, objId);
|
return SendIoctl_AddPsObjectPacket((PHidContextInternal)context, imagePath, PsProtectedObject, inheritType, objId);
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
typedef unsigned int HidStatus;
|
typedef unsigned long long HidStatus;
|
||||||
|
|
||||||
#define HID_STATUS_SUCCESSFUL(status) (status & 1)
|
#define HID_STATUS_SUCCESSFUL(status) (status & 1)
|
||||||
#define HID_STATUS_CODE(status) (status >> 1)
|
#define HID_STATUS_CODE(status) (unsigned int)(status >> 1)
|
||||||
|
|
||||||
#define HID_SET_STATUS(state, code) (code << 1 | (state ? 1 : 0))
|
#define HID_SET_STATUS(state, code) (unsigned long long)(code << 1 | (state ? 1 : 0))
|
||||||
|
|
||||||
typedef void* HidContext;
|
typedef void* HidContext;
|
||||||
typedef HidContext* PHidContext;
|
typedef HidContext* PHidContext;
|
||||||
@ -36,32 +36,32 @@ HidStatus Hid_GetState(HidContext context, HidActiveState* pstate);
|
|||||||
|
|
||||||
// Fs\Reg
|
// Fs\Reg
|
||||||
|
|
||||||
HidStatus Hid_AddHiddenRegKey(HidContext context, wchar_t* regKey, HidObjId* objId);
|
HidStatus Hid_AddHiddenRegKey(HidContext context, const wchar_t* regKey, HidObjId* objId);
|
||||||
HidStatus Hid_RemoveHiddenRegKey(HidContext context, HidObjId objId);
|
HidStatus Hid_RemoveHiddenRegKey(HidContext context, HidObjId objId);
|
||||||
HidStatus Hid_RemoveAllHiddenRegKeys(HidContext context);
|
HidStatus Hid_RemoveAllHiddenRegKeys(HidContext context);
|
||||||
|
|
||||||
HidStatus Hid_AddHiddenRegValue(HidContext context, wchar_t* regValue, HidObjId* objId);
|
HidStatus Hid_AddHiddenRegValue(HidContext context, const wchar_t* regValue, HidObjId* objId);
|
||||||
HidStatus Hid_RemoveHiddenRegValue(HidContext context, HidObjId objId);
|
HidStatus Hid_RemoveHiddenRegValue(HidContext context, HidObjId objId);
|
||||||
HidStatus Hid_RemoveAllHiddenRegValues(HidContext context);
|
HidStatus Hid_RemoveAllHiddenRegValues(HidContext context);
|
||||||
|
|
||||||
HidStatus Hid_AddHiddenFile(HidContext context, wchar_t* filePath, HidObjId* objId);
|
HidStatus Hid_AddHiddenFile(HidContext context, const wchar_t* filePath, HidObjId* objId);
|
||||||
HidStatus Hid_RemoveHiddenFile(HidContext context, HidObjId objId);
|
HidStatus Hid_RemoveHiddenFile(HidContext context, HidObjId objId);
|
||||||
HidStatus Hid_RemoveAllHiddenFiles(HidContext context);
|
HidStatus Hid_RemoveAllHiddenFiles(HidContext context);
|
||||||
|
|
||||||
HidStatus Hid_AddHiddenDir(HidContext context, wchar_t* dirPath, HidObjId* objId);
|
HidStatus Hid_AddHiddenDir(HidContext context, const wchar_t* dirPath, HidObjId* objId);
|
||||||
HidStatus Hid_RemoveHiddenDir(HidContext context, HidObjId objId);
|
HidStatus Hid_RemoveHiddenDir(HidContext context, HidObjId objId);
|
||||||
HidStatus Hid_RemoveAllHiddenDirs(HidContext context);
|
HidStatus Hid_RemoveAllHiddenDirs(HidContext context);
|
||||||
|
|
||||||
// Ps
|
// Ps
|
||||||
|
|
||||||
HidStatus Hid_AddExcludedImage(HidContext context, wchar_t* imagePath, HidPsInheritTypes inheritType, HidObjId* objId);
|
HidStatus Hid_AddExcludedImage(HidContext context, const wchar_t* imagePath, HidPsInheritTypes inheritType, HidObjId* objId);
|
||||||
HidStatus Hid_RemoveExcludedImage(HidContext context, HidObjId objId);
|
HidStatus Hid_RemoveExcludedImage(HidContext context, HidObjId objId);
|
||||||
HidStatus Hid_RemoveAllExcludedImages(HidContext context);
|
HidStatus Hid_RemoveAllExcludedImages(HidContext context);
|
||||||
HidStatus Hid_GetExcludedState(HidContext context, HidProcId procId, HidActiveState* state, HidPsInheritTypes* inheritType);
|
HidStatus Hid_GetExcludedState(HidContext context, HidProcId procId, HidActiveState* state, HidPsInheritTypes* inheritType);
|
||||||
HidStatus Hid_AttachExcludedState(HidContext context, HidProcId procId, HidPsInheritTypes inheritType);
|
HidStatus Hid_AttachExcludedState(HidContext context, HidProcId procId, HidPsInheritTypes inheritType);
|
||||||
HidStatus Hid_RemoveExcludedState(HidContext context, HidProcId procId);
|
HidStatus Hid_RemoveExcludedState(HidContext context, HidProcId procId);
|
||||||
|
|
||||||
HidStatus Hid_AddProtectedImage(HidContext context, wchar_t* imagePath, HidPsInheritTypes inheritType, HidObjId* objId);
|
HidStatus Hid_AddProtectedImage(HidContext context, const wchar_t* imagePath, HidPsInheritTypes inheritType, HidObjId* objId);
|
||||||
HidStatus Hid_RemoveProtectedImage(HidContext context, HidObjId objId);
|
HidStatus Hid_RemoveProtectedImage(HidContext context, HidObjId objId);
|
||||||
HidStatus Hid_RemoveAllProtectedImages(HidContext context);
|
HidStatus Hid_RemoveAllProtectedImages(HidContext context);
|
||||||
HidStatus Hid_GetProtectedState(HidContext context, HidProcId procId, HidActiveState* state, HidPsInheritTypes* inheritType);
|
HidStatus Hid_GetProtectedState(HidContext context, HidProcId procId, HidActiveState* state, HidPsInheritTypes* inheritType);
|
||||||
|
Loading…
Reference in New Issue
Block a user