插件接口定义

System Repair Engineer (SREng) 插件接口定义是为了能够让第三方插件能够和 System Repair Engineer (SREng) 进行通信联系而设定的。System Repair Engineer (SREng) 需要插件提供三个导出函数以便 System Repair Engineer (SREng) 调用,而 System Repair Engineer (SREng) 也会提供一些列的导出函数供插件使用。

  1. 第三方插件必须提供的导出函数以及定义
    #define SRENG_DLL_EXPORT extern "C"__declspec(dllexport)
    #define SRENG_PLUGIN_API

    初始化接口:用于对插件和 System Repair Engineer (SREng) 插件数据链路进行初始化。
    SRENG_DLL_EXPORT
    DWORD
    SRENG_PLUGIN_API
    SRENG_PLUGIN_Init(OUT SRENGPLUGININFO *pParameter, IN HWND hParent);
    参数解释:

    pParameter:[OUT] 插件信息结构体,用于 System Repair Engineer (SREng) 和 插件进行交互使用。SRENGPLUGININFO 具体定义如下:
        typedef struct structSREngPluginInfo
        {
            //结构体大小
            DWORD dwSRENGPLUGININFOSize;
            //插件版本
            DWORD dwPluginVersion;
            //插件名字
            CHAR szPluginName[30];
            //插件描述
            CHAR szPluginDescription[100];
            //插件 UUID
            CHAR szUUID[MAX_PATH];
            //插件作者
            CHAR szAuthor[MAX_PATH];
            //插件版权信息
            CHAR szCopyright[MAX_PATH];
            //插件其他信息
            CHAR szOtherInfo[300];
            //插件的图标
            HICON hIcon;
            //插件的位图表示
            HBITMAP hBitMap;
            //最小操作系统版本需求,用于限定该插件需要什么操作系统支持。
            //具体数值请参看后面关于操作系统版本ID的说明信息。
            int nMinOSRequire;
            //最大操作系统版本需求,用于限定该插件需要什么操作系统支持。
            //具体数值请参看后面关于操作系统版本ID的说明信息。
            int nMaxOSSupport;
            //是否已经被禁用
            UINT nIsDisabled;
            //最小 SREng 版本需求,具体数值请参看后面描述
            UINT nMinSREngVer;
            //是否需要管理员权限
            UINT nAdminRequire;
        }SRENGPLUGININFO;


        hParent:[IN] System Repair Engineer (SREng) 插件窗口句柄。

     

    操作系统版本ID说明:

    操作系统
    操作系统
    0 未知操作系统 60 Windows XP RTM
    40 Windows 98 61 Windows XP with SP1
    41 Windows 98SE 62 Windows XP with SP2
    42 Windows ME 63 保留
    50 Windows 2000 RTM 70 Windows Server 2003 RTM
    51 Windows 2000 with SP1 71 Windows Server 2003 with SP1
    52 Windows 2000 with SP2 72 保留
    53 Windows 2000 with SP3 80 Windows Vista RTM
    54 Windows 2000 with SP4 81 保留
    55 保留 90 保留

     

    SREng 版本说明:

    SREng 版本
    20 System Repair Engineer 2.0,包括 RC1、RC2
    21 System Repair Engineer 2.1
    22 System Repair Engineer 2.2
    23 System Repair Engineer 2.3
    System Repair Engineer 2.4
    25 System Repair Engineer 2.5

     


    调用接口:用于对插件进行调用。调用发起由 System Repair Engineer (SREng) 完成。
    SRENG_DLL_EXPORT
    DWORD
    SRENG_PLUGIN_API
    SRENG_PLAGIN_Call();

    反初始化接口:当 System Repair Engineer (SREng) 检测到插件关闭时,会调用这个接口。
    SRENG_DLL_EXPORT
    DWORD
    SRENG_PLUGIN_API
    SRENG_PLUGIN_UnInit();
  2. System Repair Engineer (SREng) 导出函数说明
    不同版本的 System Repair Engineer (SREng),其导出函数数量是不相同的。高版本的 System Repair Engineer (SREng) 将向下兼容低版本的 System Repair Engineer (SREng) 的导出函数。从 System Repair Engineer (SREng) 2.0 RC2 开始,System Repair Engineer (SREng) 提供了以下导出函数供插件调用:

    #define SRENG_DLL_EXPORT extern "C"__declspec(dllexport)
    SREng 最低版本需求
    函数原形
    解释
    2.0 RC2 SRENG_DLL_EXPORT
    void
    SREng_RefreshUserSettings();
    刷新用户环境,提供不重启生效功能。
    2.0 RC2 SRENG_DLL_EXPORT
    UINT
    SREng_GetPlatformID();
    返回操作系统ID。ID解释请看上面的说明。
    2.0 RC2 SRENG_DLL_EXPORT
    LPCTSTR
    SREng_GetPlatformString();
    返回操作版本字符串。如:Windows XP Professional Edition 等。
    2.0 RC2 SRENG_DLL_EXPORT
    int
    SREng_Is64BitPEFile(IN const CHAR szFilePath[]);
    检查传入的文件是否是64bit PE文件。

    szFilePath 最大长度是 260 字节,即 MAX_PATH。

    返回 TRUE:64bit PE 文件;
    返回 FALSE:非64bit PE文件;
    2.0 RC2 SRENG_DLL_EXPORT
    int
    SREng_DisableWoW64FsRedirection(IN BOOL bDisable);
    禁止/允许 WoW64 模式下的文件重定向。

    返回 TRUE:成功;
    返回 FALSE:失败;
    2.0 RC2 SRENG_DLL_EXPORT
    LONG
    SREng_DisableWoW64RegistryReflection(IN BOOL bDisable, IN HKEY hKey);
    禁止/允许 WoW64 模式下的注册表重定向。

    返回 TRUE:成功;
    返回 FALSE:失败;
    2.0 RC2 SRENG_DLL_EXPORT
    int
    SREng_IsUnderWoW64Mode();
    检查当前状态是否运行在WoW64模式下。

    返回 TRUE:是;
    返回 FALSE:否;
    2.0 RC2 SRENG_DLL_EXPORT
    int
    SREng_CheckRegistryIsUnder32bitView(IN HKEY hKey, IN const CHAR szSubKey[]);
    检查传入的注册表句柄是否是在32bit注册表视图里面。

    szSubKey 最大长度是 255 字节。

    返回 TRUE:是;
    返回 FALSE:否;
    返回 87:参数 szSubKey 错误;
    2.0 RC2 SRENG_DLL_EXPORT
    int
    SREng_CheckRegistryIsUnder64bitView(IN HKEY hKey, IN const CHAR szSubKey[]);
    检查传入的注册表句柄是否是在64bit注册表视图里面。

    szSubKey 最大长度是 255 字节。

    返回 TRUE:是;
    返回 FALSE:否;
    返回 87:参数 szSubKey 错误;
    2.0 RC2 SRENG_DLL_EXPORT
    BOOL
    SREng_IsAdministrator();
    检查当前调用者是否具有管理员权限。

    返回 TRUE:是;
    返回 FALSE:否;
    2.3 版本新增导出函数
    2.3 SRENG_DLL_EXPORT
    BOOL
    SREng_VerifyFileDigitalSign(IN const CHAR szFileFullPath[])
    检查文件是否具有有效的数字签名信息。

    szFileFullPath 最大长度是255字节,需要传入完整的文件路径。

    返回TRUE:是;
    返回FALSE:否;
    2.3 SRENG_DLL_EXPORT
    BOOL
    SREng_SetEveryoneFullControlOnRegKey(IN HKEY hkey)
    将传入的注册表键及其子键的注册表权限全部清空为所有人完全控制。

    返回TRUE:成功;
    返回FALSE:失败;
    2.3 SRENG_DLL_EXPORT
    BOOL
    SREng_APIHookCheck(IN CHAR szDLLFullPath[], IN CHAR szAPIName[])
    检查指定的DLL的导出函数是否被HOOK了。

    szDLLFullPath最大长度是255字节,需要传入DLL文件的完整路径。
    szAPIName 传入被检查的DLL导出函数的函数名,最大长度是50字节。

    返回TRUE:被HOOK了;
    返回FALSE:没有被HOOK;
    2.3 SRENG_DLL_EXPORT
    BOOL
    SREng_SetServiceAutoStart(IN CHAR szServiceName[])
    设置指定的服务的启动类型为自动启动。

    szServiceName 为服务名(非显示名),最大长度50字节。

    返回TRUE:成功;
    返回FALSE:失败;
    2.3 SRENG_DLL_EXPORT
    BOOL
    SREng_SetServiceSystemStart(IN CHAR szServiceName[])
    设置指定的服务的启动类型为系统启动。

    szServiceName 为服务名(非显示名),最大长度50字节。

    返回TRUE:成功;
    返回FALSE:失败;
    2.3 SRENG_DLL_EXPORT
    BOOL
    SREng_SetServiceBootStart(IN CHAR szServiceName[])
    设置指定的服务的启动类型为加载启动。

    szServiceName 为服务名(非显示名),最大长度50字节。

    返回TRUE:成功;
    返回FALSE:失败;
    2.3 SRENG_DLL_EXPORT
    BOOL
    SREng_SetServiceDemandStart(IN CHAR szServiceName[])
    设置指定的服务的启动类型为手动启动。

    szServiceName 为服务名(非显示名),最大长度50字节。

    返回TRUE:成功;
    返回FALSE:失败;
    2.3 SRENG_DLL_EXPORT
    BOOL
    SREng_SetServiceDisabled(IN CHAR szServiceName[])
    设置指定的服务的启动类型为禁用。

    szServiceName 为服务名(非显示名),最大长度50字节。

    返回TRUE:成功;
    返回FALSE:失败;
    2.3 SRENG_DLL_EXPORT
    BOOL
    SREng_UnInstallService(IN CHAR szServiceName[])
    卸载指定的服务。

    szServiceName 为服务名(非显示名),最大长度50字节。

    返回TRUE:成功;
    返回FALSE:失败;
    2.3 SRENG_DLL_EXPORT
    BOOL
    SREng_StartService(IN CHAR szServiceName[])
    启动指定的服务

    szServiceName 为服务名(非显示名),最大长度50字节。

    返回TRUE:成功;
    返回FALSE:失败;
  3. 关于插件接口的用户请参看示例程序

© Smallfrogs, 2003-2007. 保留所有权利