私のボリュームシャドウコピーサービスリクエスターが失敗する理由

StackOverflow https://stackoverflow.com/questions/789754

  •  16-09-2019
  •  | 
  •  

質問

VSSリクエスターを実装しましたが、Windows Server 2008でコンパイルおよび実行をリンクしますが、Windows Server 2003で実行しません。リクエスターはDLL内にあるため、DLLはロードされません。を使用して 依存関係ウォーカー, 、私は自分のDLLがvssapi.dllをうまく見つけていることを発見しましたが、それは報告しています:

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

私のvssapi.dllを見ると、見つかりません CreateVssBackupComponentsInternal, 、vssapi.dllはまったく違うものをエクスポートします: ?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z.

役に立ちましたか?

解決

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コードに公開します。 MSDNはあまり役に立たなかったようです。しかし vshadow ツールとサンプルは、VSSリクエスターをコンパイルする方法の例を提供しました。

また、X64またはIA64対X86の場合、もう一度再コンパイルする必要があることに注意してください。つまり、すべてのプラットフォームをサポートするには、実行可能ファイルの9つのバージョンが必要です。

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top