BSOne.SFC/Tocsg.Module/Bs1Flt/bs1dc_Delphi/Bs1FltCtrl.pas

565 lines
22 KiB
Plaintext
Raw Permalink Blame History

unit Bs1FltCtrl;
interface
uses
Windows, SysUtils, Classes;
const
PG_PID_UNDEFINED = 0;
PG_PID_ALLOW = 1;
PG_PID_BLACK = 8;
BS1FLT_ERR_NOT_LOADED = DWORD($FFFFFFFF);
LOG_CONNECT = $1;
LOG_DISCONNECT = $2;
LOG_POLICY = $4;
LOG_DEBUG_ = $8;
LOG_PROCESS = $10;
LOG_PROCESS_PROTECT = $20;
LOG_PROCESS_MONITOR = $40;
LOG_PROCESS_BLOCK = $80;
LOG_ALL = $FF;
type
{ Device States }
TDeviceState = (
dsEnable = 0,
dsDisable,
dsReadOnly
);
TLogState = (
lsNoneUse = 0,
lsUse
);
{ Device Types }
TDeviceType = (
BDC_UNKNOWN_DEV = 0,
BDC_CDROM = 1,
BDC_FLOOPY = 2,
BDC_USB_DISK = 3,
BDC_LOCAL_DISK = 4,
BDC_NETWORKDRIVEOUT = 5,
BDC_EXTERNALHDD = 6,
BDC_NETWORKDRIVEIN = 7,
BDC_NETWORKSHAREOUT = 8,
BDC_USB = 9,
BDC_USB_NET = 10,
BDC_USB_HID = 11,
BDC_1394 = 12,
BDC_SERIAL = 13,
BDC_PARALLEL = 14,
BDC_PCMCIA = 15,
BDC_PCMCIA_NET = 16,
BDC_IRDA = 17,
BDC_MODEM = 18,
BDC_BLUETOOTH = 19,
BDC_BLUETOOTH_FILE = 20,
BDC_WIBRO = 21,
BDC_TLOGIN = 22,
BDC_ACTIVE_SYNC = 23,
BDC_WIRELESS = 24,
BDC_LGMODEM = 25,
BDC_TETHERING = 26,
BDC_SDCARD = 27,
BDC_PORTABLE_STORAGE = 28,
BDC_WEBCAM = 29,
BDC_MTP = 30,
BDC_MAX_DEVICE_TYPE = 31
);
TBs1FltCallback = function(Context: Pointer): DWORD; stdcall;
TfpCleanup = function(): DWORD; stdcall;
TfpInit = function(lpcPath: PWideChar; logcb: TBs1FltCallback; opencb: TBs1FltCallback): DWORD; stdcall;
TfpSetPath = function(ulType: DWORD; lpcwPath: PWideChar): DWORD; stdcall;
TfpDelPath = function(ulType: DWORD; lpcwPath: PWideChar): DWORD; stdcall;
TfpBegin = function(bIsBegin: DWORD): DWORD; stdcall;
TfpSetPid = function(dwType: DWORD; dwPid: DWORD): DWORD; stdcall;
TfpDelPid = function(dwPid: DWORD): DWORD; stdcall;
TfpDebug = function(flag: ULONG): DWORD; stdcall;
TfpSetProcessPath = function(dwType: DWORD; lpcwPath: PWideChar): DWORD; stdcall;
TfpDelProcessPath = function(dwType: DWORD; lpcwPath: PWideChar): DWORD; stdcall;
TfpFolderProtectControl = function(bIsProtect: DWORD): DWORD; stdcall;
TfpStartShareWatch = function(bIsWatch: DWORD): DWORD; stdcall;
TfpSetFileName = function(dwType: DWORD; lpcwPath: PWideChar): DWORD; stdcall;
TfpDeleteFile = function(path: PWideChar): DWORD; stdcall;
TfpTerminateProcess = function(pid: DWORD): DWORD; stdcall;
TfpSetHook = function(dwType: DWORD; enable: DWORD): DWORD; stdcall;
TfpSetPolicy = function(device_type: DWORD; state: DWORD; islog: DWORD): DWORD; stdcall;
TfpProcessProtect = function(enable: DWORD): DWORD; stdcall;
TfpSetProcessProtectName = function(name: PWideChar): DWORD; stdcall;
TfpDelProcessProtectName = function(name: PWideChar): DWORD; stdcall;
TfpSetProcessProtectId = function(pid: DWORD): DWORD; stdcall;
TfpDelProcessProtectId = function(pid: DWORD): DWORD; stdcall;
TfpSetRegProtect = function(enable: DWORD): DWORD; stdcall;
TfpSetRegProtectName = function(regkey: PWideChar): DWORD; stdcall;
TfpDelRegProtectName = function(regkey: PWideChar): DWORD; stdcall;
TfpBs1fltSetDeviceProtect = function(enable: DWORD): DWORD; stdcall;
TfpBs1fltSetUsbException = function(vid: PWideChar; pid: PWideChar; productrevisionlevel: PWideChar; vendorspecific: PWideChar): DWORD; stdcall;
TfpBs1fltSetUsbPortException= function(vid: DWORD; pid: DWORD; bcddevice: DWORD; serial: LPCWSTR): DWORD; stdcall;
TfpBs1fltDelUsbPortException= function(vid: DWORD; pid: DWORD; bcddevice: DWORD; serial: LPCWSTR): DWORD; stdcall;
TfpBs1fltDelUsbException = function(vid: PWideChar; pid: PWideChar; productrevisionlevel: PWideChar; vendorspecific: PWideChar): DWORD; stdcall;
TfpBs1fltClearUsbException = function(): DWORD; stdcall;
TfpBs1fltSetLogType = function(logtype: DWORD): DWORD; stdcall;
TfpBs1fltProcessCreate = function(enable : DWORD ): DWORD; stdcall;
TfpBs1fltSetProcessCreateBlockRule = function(name: LPCWSTR; cmd: LPCWSTR; parentName: LPCWSTR ): DWORD; stdcall;
TfpBs1fltClearProcessCreateBlockRule = function():DWORD stdcall;
TfBs1fltClearUsbPortException = function() : DWORD stdcall;
TfBs1fltOpen = function() : DWORD stdcall;
{ TBs1fltControl Class }
TBs1fltControl = class
private
FHandle: HMODULE;
FCurrentPath: string;
FIsLoaded: Boolean;
FBs1FltCleanup: TfpCleanup;
FBs1FltInit: TfpInit;
FBs1FltSetPath: TfpSetPath;
FBs1FltDelPath: TfpDelPath;
FBs1FltBegin: TfpBegin;
FBs1FltSetPid: TfpSetPid;
FBs1FltDelPid: TfpDelPid;
FBs1FltDebug: TfpDebug;
FBs1FltSetProcessPath: TfpSetProcessPath;
FBs1FltDelProcessPath: TfpDelProcessPath;
FBs1FltFolderProtectControl: TfpFolderProtectControl;
FBs1FltStartShareWatch: TfpStartShareWatch;
FBs1FltSetFileName: TfpSetFileName;
FBs1FltDeleteFile: TfpDeleteFile;
FBs1FltTerminateProcess: TfpTerminateProcess;
FBs1FltSetHook: TfpSetHook;
FBs1FltSetPolicy: TfpSetPolicy;
FBs1FltProcessProtect: TfpProcessProtect;
FBs1FltSetProcessProtectName: TfpSetProcessProtectName;
FBs1FltDelProcessProtectName: TfpDelProcessProtectName;
FBs1FltSetProcessProtectId: TfpSetProcessProtectId;
FBs1FltDelProcessProtectId: TfpDelProcessProtectId;
FBs1FltSetRegProtect: TfpSetRegProtect;
FBs1FltSetRegProtectName: TfpSetRegProtectName;
FBs1FltDelRegProtectName: TfpDelRegProtectName;
FBs1fltSetDeviceProtect: TfpBs1fltSetDeviceProtect;
FBs1fltSetUsbException: TfpBs1fltSetUsbException;
FBs1fltSetUsbPortException: TfpBs1fltSetUsbPortException;
FBs1fltDelUsbPortException: TfpBs1fltDelUsbPortException;
FBs1fltDelUsbException: TfpBs1fltDelUsbException;
FBs1fltClearUsbException: TfpBs1fltClearUsbException;
FBs1fltSetLogType: TfpBs1fltSetLogType;
FBs1fltProcessCreate: TfpBs1fltProcessCreate;
FBs1fltSetProcessCreateBlockRule: TfpBs1fltSetProcessCreateBlockRule;
FBs1fltClearProcessCreateBlockRule: TfpBs1fltClearProcessCreateBlockRule;
FBs1fltClearUsbPortException: TfBs1fltClearUsbPortException;
FBs1fltOpen: TfBs1fltOpen;
function LoadFunc(var ProcPtr: Pointer; Ordinal: Integer): Boolean;
procedure UnloadDll;
public
constructor Create;
destructor Destroy; override;
function InitDriver(const Path: string; LogCallback: TBs1FltCallback): DWORD;
property IsLoaded: Boolean read FIsLoaded;
function Cleanup: DWORD;
function SetPath(ulType: DWORD; lpcwPath: PWideChar): DWORD;
function DelPath(ulType: DWORD; lpcwPath: PWideChar): DWORD;
function SetProcessPath(dwType: DWORD; lpcwPath: PWideChar): DWORD;
function SetFileName(dwType: DWORD; lpcwPath: PWideChar): DWORD;
function BeginControl(bIsBegin: DWORD): DWORD;
function SetPid(dwType: DWORD; dwPid: DWORD): DWORD;
function DelPid(dwPid: DWORD): DWORD;
function FolderProtectControl(bIsProtect: DWORD): DWORD;
function StartShareWatch(bIsWatch: DWORD): DWORD;
function Debug(flag: ULONG): DWORD;
function DeleteFile(path: PWideChar): DWORD;
function TerminateProcess(pid: DWORD): DWORD;
function DelProcessPath(dwType: DWORD; lpcwPath: PWideChar): DWORD;
function SetHook(dwType: DWORD; enable: DWORD): DWORD;
function SetPolicy(device_type: DWORD; state: DWORD; islog: DWORD): DWORD;
function ProcessProtect(enable: DWORD): DWORD;
function SetProcessProtectName(name: PWideChar): DWORD;
function DelProcessProtectName(name: PWideChar): DWORD;
function SetProcessProtectId(pid: DWORD): DWORD;
function DelProcessProtectId(pid: DWORD): DWORD;
function SetRegProtect(enable: DWORD): DWORD;
function SetRegProtectName(regkey: PWideChar): DWORD;
function DelRegProtectName(regkey: PWideChar): DWORD;
function SetDeviceProtect(enable: DWORD): DWORD;
function SetUsbException(vid: PWideChar; pid: PWideChar; productrevisionlevel: PWideChar; vendorspecific: PWideChar): DWORD;
function SetUsbPortException(vid: DWORD; pid: DWORD; bcddevice: DWORD; serial: LPCWSTR): DWORD;
function DelUsbPortException(vid: DWORD; pid: DWORD; bcddevice: DWORD; serial: LPCWSTR): DWORD;
function DelUsbException(vid: PWideChar; pid: PWideChar; productrevisionlevel: PWideChar; vendorspecific: PWideChar): DWORD;
function ClearUsbException(): DWORD;
function SetLogType(logtype: DWORD): DWORD;
//<2F><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ON/OFF
function ProcessCreate(enable: DWORD): DWORD;
//<2F><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>å <20><><EFBFBD><EFBFBD>
function SetProcessCreateBlockRule(name, cmd, parentName: LPCWSTR): DWORD;
//<2F><><EFBFBD>μ<EFBFBD><CEBC><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>å <20>ʱ<EFBFBD>ȭ
function ClearProcessCreateBlockRule: DWORD;
function ClearUsbPortException: DWORD;
function Open: DWORD;
end;
var
gBs1fltControl: TBs1fltControl;
implementation
const
ORD_Cleanup = 1;
ORD_Init = 2;
ORD_SetPath = 3;
ORD_DelPath = 4;
ORD_Begin = 5;
ORD_SetPid = 6;
ORD_DelPid = 7;
ORD_Debug = 8;
ORD_SetProcessPath = 9;
ORD_DelProcessPath = 10;
ORD_FolderProtectControl = 11;
ORD_StartShareWatch = 12;
ORD_SetFileName = 13;
ORD_DeleteFile = 14;
ORD_TerminateProcess = 15;
ORD_SetHook = 16;
ORD_SetPolicy = 17;
ORD_ProcessProtect = 18;
ORD_SetProcessProtectName = 19;
ORD_DelProcessProtectName = 20;
ORD_SetProcessProtectId = 21;
ORD_DelProcessProtectId = 22;
ORD_SetRegProtect = 23;
ORD_SetRegProtectName = 24;
ORD_DelRegProtectName = 25;
ORD_SetDeviceProtect = 26;
ORD_SetUsbException = 27;
ORD_SetUsbPortException = 28;
ORD_DelUsbPortException = 29;
ORD_DelUsbException = 30;
ORD_ClearUsbException = 31;
ORD_SetLogType = 32;
ORD_ProcessCreate = 33;
ORD_SetProcessCreateBlockRule = 34;
ORD_ClearProcessCreateBlockRule = 35;
ORD_ClearUsbPortException = 36;
ORD_Open = 37;
{ TBs1fltControl }
constructor TBs1fltControl.Create;
begin
inherited Create;
FHandle := 0;
gBs1fltControl:= Self;
FIsLoaded := False;
end;
destructor TBs1fltControl.Destroy;
begin
UnloadDll;
inherited Destroy;
end;
procedure TBs1fltControl.UnloadDll;
begin
if FHandle <> 0 then
begin
FreeLibrary(FHandle);
FHandle := 0;
end;
FIsLoaded := False;
end;
function TBs1fltControl.LoadFunc(var ProcPtr: Pointer; Ordinal: Integer): Boolean;
begin
if FHandle = 0 then
begin
ProcPtr := nil;
Result := False;
Exit;
end;
ProcPtr := GetProcAddress(FHandle, PAnsiChar(UIntPtr(Ordinal)));
Result := Assigned(ProcPtr);
end;
function TBs1fltControl.InitDriver(const Path: string; LogCallback: TBs1FltCallback): DWORD;
var
DllPath: string;
AllLoaded: Boolean;
begin
UnloadDll;
FCurrentPath := Path;
DllPath := IncludeTrailingPathDelimiter(Path) + 'bs1fltctrl.dll';
FHandle := LoadLibraryW(PWideChar(DllPath));
if FHandle = 0 then
begin
Result := 1;
Exit;
end;
AllLoaded := True;
AllLoaded := AllLoaded and LoadFunc(@FBs1FltCleanup, ORD_Cleanup);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltInit, ORD_Init);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltSetPath, ORD_SetPath);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltDelPath, ORD_DelPath);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltBegin, ORD_Begin);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltSetPid, ORD_SetPid);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltDelPid, ORD_DelPid);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltDebug, ORD_Debug);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltSetProcessPath, ORD_SetProcessPath);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltDelProcessPath, ORD_DelProcessPath);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltFolderProtectControl, ORD_FolderProtectControl);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltStartShareWatch, ORD_StartShareWatch);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltSetFileName, ORD_SetFileName);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltDeleteFile, ORD_DeleteFile);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltTerminateProcess, ORD_TerminateProcess);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltSetHook, ORD_SetHook);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltSetPolicy, ORD_SetPolicy);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltProcessProtect, ORD_ProcessProtect);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltSetProcessProtectName, ORD_SetProcessProtectName);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltDelProcessProtectName, ORD_DelProcessProtectName);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltSetProcessProtectId, ORD_SetProcessProtectId);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltDelProcessProtectId, ORD_DelProcessProtectId);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltSetRegProtect, ORD_SetRegProtect);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltSetRegProtectName, ORD_SetRegProtectName);
AllLoaded := AllLoaded and LoadFunc(@FBs1FltDelRegProtectName, ORD_DelRegProtectName);
AllLoaded := AllLoaded and LoadFunc(@FBs1fltSetDeviceProtect, ORD_SetDeviceProtect);
AllLoaded := AllLoaded and LoadFunc(@FBs1fltSetUsbException, ORD_SetUsbException);
AllLoaded := AllLoaded and LoadFunc(@FBs1fltSetUsbPortException, ORD_SetUsbPortException);
AllLoaded := AllLoaded and LoadFunc(@FBs1fltDelUsbPortException, ORD_DelUsbPortException);
AllLoaded := AllLoaded and LoadFunc(@FBs1fltDelUsbException, ORD_DelUsbException);
AllLoaded := AllLoaded and LoadFunc(@FBs1fltClearUsbException, ORD_ClearUsbException);
AllLoaded := AllLoaded and LoadFunc(@FBs1fltSetLogType, ORD_SetLogType);
AllLoaded := AllLoaded and LoadFunc(@FBs1fltProcessCreate, ORD_ProcessCreate);
AllLoaded := AllLoaded and LoadFunc(@FBs1fltSetProcessCreateBlockRule, ORD_SetProcessCreateBlockRule);
AllLoaded := AllLoaded and LoadFunc(@FBs1fltClearProcessCreateBlockRule, ORD_ClearProcessCreateBlockRule);
AllLoaded := AllLoaded and LoadFunc(@FBs1fltClearUsbPortException, ORD_ClearUsbPortException);
AllLoaded := AllLoaded and LoadFunc(@FBs1fltOpen, ORD_Open);
if not AllLoaded then
begin
UnloadDll;
Result := 2;
Exit;
end;
FIsLoaded := True;
Result := FBs1FltInit(PWideChar(Path), LogCallback, nil);
if Result = 0 then
begin
FBs1FltSetPid(PG_PID_ALLOW, GetCurrentProcessId());
SetLogTYpe(LOG_PROCESS_BLOCK or LOG_CONNECT);
// SetLogTYpe(LOG_ALL);
end;
end;
function TBs1fltControl.Cleanup: DWORD;
begin
if Assigned(FBs1FltCleanup) then Result := FBs1FltCleanup() else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.SetPath(ulType: DWORD; lpcwPath: PWideChar): DWORD;
begin
if Assigned(FBs1FltSetPath) then Result := FBs1FltSetPath(ulType, lpcwPath) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.DelPath(ulType: DWORD; lpcwPath: PWideChar): DWORD;
begin
if Assigned(FBs1FltDelPath) then Result := FBs1FltDelPath(ulType, lpcwPath) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.SetProcessPath(dwType: DWORD; lpcwPath: PWideChar): DWORD;
begin
if Assigned(FBs1FltSetProcessPath) then Result := FBs1FltSetProcessPath(dwType, lpcwPath) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.SetFileName(dwType: DWORD; lpcwPath: PWideChar): DWORD;
begin
if Assigned(FBs1FltSetFileName) then Result := FBs1FltSetFileName(dwType, lpcwPath) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.BeginControl(bIsBegin: DWORD): DWORD;
begin
if Assigned(FBs1FltBegin) then Result := FBs1FltBegin(bIsBegin) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.SetPid(dwType: DWORD; dwPid: DWORD): DWORD;
begin
if Assigned(FBs1FltSetPid) then Result := FBs1FltSetPid(dwType, dwPid) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.DelPid(dwPid: DWORD): DWORD;
begin
if Assigned(FBs1FltDelPid) then Result := FBs1FltDelPid(dwPid) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.FolderProtectControl(bIsProtect: DWORD): DWORD;
begin
if Assigned(FBs1FltFolderProtectControl) then Result := FBs1FltFolderProtectControl(bIsProtect) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.StartShareWatch(bIsWatch: DWORD): DWORD;
begin
if Assigned(FBs1FltStartShareWatch) then Result := FBs1FltStartShareWatch(bIsWatch) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.Debug(flag: ULONG): DWORD;
begin
if Assigned(FBs1FltDebug) then Result := FBs1FltDebug(flag) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.DeleteFile(path: PWideChar): DWORD;
begin
if Assigned(FBs1FltDeleteFile) then Result := FBs1FltDeleteFile(path) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.TerminateProcess(pid: DWORD): DWORD;
begin
if Assigned(FBs1FltTerminateProcess) then Result := FBs1FltTerminateProcess(pid) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.DelProcessPath(dwType: DWORD; lpcwPath: PWideChar): DWORD;
begin
if Assigned(FBs1FltDelProcessPath) then Result := FBs1FltDelProcessPath(dwType, lpcwPath) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.SetHook(dwType: DWORD; enable: DWORD): DWORD;
begin
if Assigned(FBs1FltSetHook) then Result := FBs1FltSetHook(dwType, enable) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.SetPolicy(device_type: DWORD; state: DWORD; islog: DWORD): DWORD;
begin
if Assigned(FBs1FltSetPolicy) then Result := FBs1FltSetPolicy(device_type, state, islog) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.ProcessProtect(enable: DWORD): DWORD;
begin
if Assigned(FBs1FltProcessProtect) then Result := FBs1FltProcessProtect(enable) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.SetProcessProtectName(name: PWideChar): DWORD;
begin
if Assigned(FBs1FltSetProcessProtectName) then Result := FBs1FltSetProcessProtectName(name) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.DelProcessProtectName(name: PWideChar): DWORD;
begin
if Assigned(FBs1FltDelProcessProtectName) then Result := FBs1FltDelProcessProtectName(name) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.SetProcessProtectId(pid: DWORD): DWORD;
begin
if Assigned(FBs1FltSetProcessProtectId) then Result := FBs1FltSetProcessProtectId(pid) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.DelProcessProtectId(pid: DWORD): DWORD;
begin
if Assigned(FBs1FltDelProcessProtectId) then Result := FBs1FltDelProcessProtectId(pid) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.SetRegProtect(enable: DWORD): DWORD;
begin
if Assigned(FBs1FltSetRegProtect) then Result := FBs1FltSetRegProtect(enable) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.SetRegProtectName(regkey: PWideChar): DWORD;
begin
if Assigned(FBs1FltSetRegProtectName) then Result := FBs1FltSetRegProtectName(regkey) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.DelRegProtectName(regkey: PWideChar): DWORD;
begin
if Assigned(FBs1FltDelRegProtectName) then Result := FBs1FltDelRegProtectName(regkey) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.SetDeviceProtect(enable: DWORD): DWORD;
begin
if Assigned(FBs1fltSetDeviceProtect) then Result := FBs1fltSetDeviceProtect(enable) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.SetUsbException(vid: PWideChar; pid: PWideChar; productrevisionlevel: PWideChar; vendorspecific: PWideChar): DWORD;
begin
if Assigned(FBs1fltSetUsbException) then Result := FBs1fltSetUsbException(vid, pid, productrevisionlevel, vendorspecific) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.SetUsbPortException(vid: DWORD; pid: DWORD; bcddevice: DWORD; serial: LPCWSTR): DWORD;
begin
if Assigned(FBs1fltSetUsbPortException) then Result := FBs1fltSetUsbPortException(vid, pid, bcddevice, serial) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.DelUsbPortException(vid: DWORD; pid: DWORD; bcddevice: DWORD; serial: LPCWSTR): DWORD;
begin
if Assigned(FBs1fltDelUsbPortException) then Result := FBs1fltDelUsbPortException(vid, pid, bcddevice, serial) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.DelUsbException(vid: PWideChar; pid: PWideChar; productrevisionlevel: PWideChar; vendorspecific: PWideChar): DWORD;
begin
if Assigned(FBs1fltDelUsbException) then Result := FBs1fltDelUsbException(vid, pid, productrevisionlevel, vendorspecific) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.ClearUsbException(): DWORD;
begin
if Assigned(FBs1fltClearUsbException) then Result := FBs1fltClearUsbException() else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.SetLogType(logtype: DWORD): DWORD;
begin
if Assigned(FBs1fltSetLogType) then Result := FBs1fltSetLogType(logtype) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.ProcessCreate(enable : DWORD): DWORD;
begin
if Assigned(FBs1fltProcessCreate) then Result := FBs1fltProcessCreate(enable) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.SetProcessCreateBlockRule(name: LPCWSTR; cmd: LPCWSTR; parentName: LPCWSTR): DWORD;
begin
if Assigned(FBs1fltSetProcessCreateBlockRule) then Result := FBs1fltSetProcessCreateBlockRule(name, cmd, parentName) else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.ClearProcessCreateBlockRule(): DWORD;
begin
if Assigned(FBs1fltClearProcessCreateBlockRule) then Result := FBs1fltClearProcessCreateBlockRule() else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.ClearUsbPortException(): DWORD;
begin
if Assigned(FBs1fltClearUsbPortException) then Result := FBs1fltClearUsbPortException() else Result := BS1FLT_ERR_NOT_LOADED;
end;
function TBs1fltControl.Open(): DWORD;
begin
if Assigned(FBs1fltOpen) then Result := FBs1fltOpen() else Result := BS1FLT_ERR_NOT_LOADED;
end;
end.