代码之家  ›  专栏  ›  技术社区  ›  Jared Oberhaus

为什么卷影复制服务请求程序失败:在内部找不到CreateVSSBackupComponents

  •  1
  • Jared Oberhaus  · 技术社区  · 16 年前

    我实现了一个VSS请求程序,它链接编译并在Windows Server 2008上执行,但不在Windows Server 2003上执行。由于我的请求程序位于DLL中,因此不会加载我的DLL。使用 Dependency Walker

    Error: At least one required implicit or forwarded dependency was not found.
    

    查看我的VSSAPI.DLL,它找不到 CreateVssBackupComponentsInternal ,而VSSAPI.DLL则导出完全不同的内容: ?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z

    2 回复  |  直到 6 年前
        1
  •  1
  •   Jared Oberhaus    16 年前

    VSS必须专门针对每个平台和操作系统进行编译和定向,包括Windows XP、Windows Server 2003和Vista/Windows Server 2008。

    第一个完全支持VSS请求程序的Microsoft SDK是v6.1,它只支持在Vista上运行的请求程序。如果要在Windows Server 2003或XP上运行:

    以下是AlphaVSS在其 Config.h ,但VSS SDK中的VShadow示例没有:它只设置include和library路径。我认为跟随VShadow更有可能成功。但为了完整性:

    #define NTDDI_VERSION NTDDI_WINXPSP2
    #define _WIN32_WINNT _WIN32_WINNT_WINXP
    #define WINVER _WIN32_WINNT
    

    #define NTDDI_VERSION NTDDI_WS03SP1
    #define _WIN32_WINNT _WIN32_WINNT_WS03
    #define WINVER 0x501
    

    如果目标是Vista,请不要参考VSS SDK。而是参考Windows 6.1 SDK和:

    #define NTDDI_VERSION NTDDI_WS08
    #define _WIN32_WINNT _WIN32_WINNT_WS08
    #define WINVER _WIN32_WINNT
    

    我不能完全相信这一点,我通过阅读一个名为 AlphaVSS (见 announcement VShadow

    还要注意,对于x64或ia64 vs x86,必须重新编译。这意味着为了支持所有平台,您需要9个编译版本的可执行文件。

        2
  •  1
  •   decaf decaf    16 年前

    只是想添加AlphaVSS还设置路径,而不仅仅是定义。这两种情况都需要。

    推荐文章