#pragma once #include using namespace std; typedef DWORD(WINAPI* fpCallBack)(PVOID context); typedef DWORD(WINAPI* fpCleanup)(); typedef DWORD(WINAPI* fpInit)(LPCWSTR lpcPath, fpCallBack logcb, fpCallBack opencb); typedef DWORD(WINAPI* fpSetPath)(DWORD ulType, LPCWSTR lpcwPath); typedef DWORD(WINAPI* fpDelPath)(DWORD ulType, LPCWSTR lpcwPath); typedef DWORD(WINAPI* fpSetProcessPath)(DWORD dwType, LPCWSTR lpcwPath); typedef DWORD(WINAPI* fpSetFileName)(DWORD dwType, LPCWSTR lpcwPath); typedef DWORD(WINAPI* fpBegin)(DWORD bIsBegin); typedef DWORD(WINAPI* fpSetPid)(DWORD dwType, DWORD dwPid); typedef DWORD(WINAPI* fpDelPid)(DWORD dwPid); typedef DWORD(WINAPI* fpFolderProtectControl)(DWORD bIsProtect); typedef DWORD(WINAPI* fpStartShareWatch)(DWORD bIsWatch); typedef DWORD(WINAPI* fpDebug)(ULONG flag); typedef DWORD(WINAPI* fpDeleteFile)(LPWSTR path); typedef DWORD(WINAPI* fpTerminateProcess)(DWORD pid); typedef DWORD(WINAPI* fpDelProcessPath)(DWORD dwType, LPCWSTR lpcwPath); typedef DWORD(WINAPI* fpSetHook)(DWORD type, DWORD set); typedef DWORD(WINAPI* fpSetPolicy)(DWORD devcie_type, DWORD state, DWORD islog); typedef DWORD(WINAPI* fpProcessProtect)(DWORD enable); typedef DWORD(WINAPI* fpSetProcessProtectName)(LPCWSTR name); typedef DWORD(WINAPI* fpDelProcessProtectName)(LPCWSTR name); typedef DWORD(WINAPI* fpSetProcessProtectId)(DWORD pid); typedef DWORD(WINAPI* fpDelProcessProtectId)(DWORD pid); typedef DWORD(WINAPI* fpSetRegProtect)(DWORD enable); typedef DWORD(WINAPI* fpSetRegProtectName)(LPCWSTR regkey); typedef DWORD(WINAPI* fpDelRegProtectName)(LPCWSTR regkey); typedef DWORD(WINAPI* fpBs1fltSetDeviceProtect)(DWORD enable); typedef DWORD(WINAPI* fpBs1fltSetUsbException)(PWCHAR vid, PWCHAR pid, PWCHAR productrevisionlevel, PWCHAR vendorspecific); typedef DWORD(WINAPI* fpBs1fltSetUsbPortException)(DWORD vid, DWORD pid, DWORD bcddevice, LPCWSTR serial); typedef DWORD(WINAPI* fpBs1fltDelUsbPortException)(DWORD vid, DWORD pid, DWORD bcddevice, LPCWSTR serial); typedef DWORD(WINAPI* fpBs1fltDelUsbException)(LPCWSTR vid, LPCWSTR pid, LPCWSTR productrevisionlevel, LPCWSTR vendorspecific); typedef DWORD(WINAPI* fpBs1fltClearUsbException)(); typedef DWORD(WINAPI* fpBs1fltSetLogType)(DWORD type); typedef DWORD(WINAPI* fpBs1fltProcessCreate)(DWORD enable); typedef DWORD(WINAPI* fpBs1fltSetProcessCreateBlockRule)(LPCWSTR name, LPCWSTR cmd); typedef DWORD(WINAPI* fpBs1fltClearProcessCreateBlockRule)(); typedef DWORD(WINAPI* fpBs1fltClearUsbPortException)(); typedef DWORD(WINAPI* fpBs1fltOpen)(); typedef DWORD(WINAPI* fpBs1fltSetUsbPolicy)(DWORD usb_device_type, DWORD state); class Bs1fltControl { public: Bs1fltControl(); ~Bs1fltControl(); wstring current_path_; DWORD Init(LPCTSTR path, fpCallBack createcb); fpCleanup Bs1FltCleanup; fpInit Bs1FltInit; fpSetPath Bs1FltSetPath; fpDelPath Bs1FltDelPath; fpSetProcessPath Bs1FltSetProcessPath; fpSetFileName Bs1FltSetFileName; fpBegin Bs1FltBegin; fpSetPid Bs1FltSetPid; fpDelPid Bs1FltDelPid; fpFolderProtectControl Bs1FltFolderProtectControl; fpStartShareWatch Bs1FltStartShareWatch; fpDebug Bs1FltDebug; fpDeleteFile Bs1FltDeleteFile; fpTerminateProcess Bs1FltTerminateProcess; fpDelProcessPath Bs1FltDelProcessPath; fpSetHook Bs1FltSetHook; fpSetPolicy Bs1FltSetPolicy; fpProcessProtect Bs1FltProcessProtect; fpSetProcessProtectName Bs1FltSetProcessProtectName; fpDelProcessProtectName Bs1FltDelProcessProtectName; fpSetProcessProtectId Bs1FltSetProcessProtectId; fpDelProcessProtectId Bs1FltDelProcessProtectId; fpSetRegProtect Bs1FltSetRegProtect; fpSetRegProtectName Bs1FltSetRegProtectName; fpDelRegProtectName Bs1FltDelRegProtectName; fpBs1fltSetDeviceProtect Bs1fltSetDeviceProtect; fpBs1fltSetUsbException Bs1fltSetUsbException; fpBs1fltSetUsbPortException Bs1fltSetUsbPortException; fpBs1fltDelUsbPortException Bs1fltDelUsbPortException; fpBs1fltDelUsbException Bs1fltDelUsbException; fpBs1fltClearUsbException Bs1fltClearUsbException; fpBs1fltSetLogType Bs1fltSetLogType; fpBs1fltProcessCreate Bs1fltProcessCreate; fpBs1fltSetProcessCreateBlockRule Bs1fltSetProcessCreateBlockRule; fpBs1fltClearProcessCreateBlockRule Bs1fltClearProcessCreateBlockRule; fpBs1fltClearUsbPortException Bs1fltClearUsbPortException; fpBs1fltOpen Bs1fltOpen; fpBs1fltSetUsbPolicy Bs1fltSetUsbPolicy; HMODULE h_; };