1

VSS リクエスターを実装しました。Windows Server 2008 ではリンク コンパイルと実行が行われますが、Windows Server 2003 では実行されません。リクエスターが DLL 内にあるため、DLL が読み込まれません。Dependency Walkerを使用して、DLL が VSSAPI.DLL を正常に検出していることを発見しましたが、次のように報告されます。

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

私の VSSAPI.DLL を見ると、 が見つかりませんがCreateVssBackupComponentsInternal、VSSAPI.DLL はまったく異なるものをエクスポートします: ?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z.

4

2 に答える 2

1

VSS は、Windows XP、Windows Server 2003、Vista/Windows Server 2008 など、各プラットフォームと OS を対象としてコンパイルし、ターゲットにする必要があります。

VSS リクエスターを完全にサポートする最初の Microsoft SDK は v6.1 で、Vista で実行されているリクエスターのみをサポートします。Windows Server 2003 または XP で実行する場合:

  • VSS SDK 7.2をダウンロードします。
  • インクルード パスとライブラリ パスを設定して、VSS SDK 内の適切なディレクトリを検索します。

以下は AlphaVSS がそのConfig.hで行うことですが、VSS SDK の VShadow サンプルは行いません。インクルード パスとライブラリ パスを設定するだけです。次の VShadow が成功する可能性が高いことをお勧めします。しかし、完全を期すために:

Windows XP を対象とする場合:

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

Windows Server 2003 を対象とする場合:

#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

私はこれをすべて信用することはできません.VSSを.NETコードに公開するAlphaVSSと呼ばれるプロジェクトのソースコードを読んで、これを理解ました. MSDN はあまり役に立たなかったようです。ただし、VShadowツールとサンプルは、VSS リクエスターをコンパイルする方法の例を提供しました。

また、x64 または ia64 と x86 では再コンパイルする必要があることにも注意してください。つまり、すべてのプラットフォームをサポートするには、9 つ​​のコンパイル済みバージョンの実行可能ファイルが必要になります。

于 2009-04-25T21:23:49.157 に答える
1

AlphaVSS は、定義だけでなく、パスも設定することを追加したかっただけです。これはどちらの場合でも必要です。

于 2009-05-31T20:41:31.457 に答える