IVssBackupComponentsEx3::GetWriterStatusEx 方法 (vsbackup.h)

傳回指定寫入器的擴充狀態資訊。

語法

HRESULT GetWriterStatusEx(
  [in]            UINT             iWriter,
  [out]           VSS_ID           *pidInstance,
  [out]           VSS_ID           *pidWriter,
  [out]           BSTR             *pbstrWriter,
  [out]           VSS_WRITER_STATE *pnStatus,
  [out]           HRESULT          *phrFailureWriter,
  [out, optional] HRESULT          *phrApplication,
  [out, optional] BSTR             *pbstrApplicationMessage
);

參數

[in] iWriter

要擷取其元數據的寫入器索引。 此參數的值是包含 0 到 n–1 的整數,其中 n 是目前系統上的寫入器總數。 n 的值是由IVssBackupComponents::GetWriterStatusCount 方法傳回。

[out] pidInstance

接收寫入器實例識別碼之呼叫端配置的變數位址。 這個參數是必要的,而且不能是 NULL

[out] pidWriter

接收寫入器類別識別碼之呼叫端配置的變數位址。 這個參數是必要的,而且不能是 NULL

[out] pbstrWriter

呼叫端配置的變數位址,接收包含指定寫入器名稱的字串。 這個參數是必要的,而且不能是 NULL

[out] pnStatus

接收 VSS_WRITER_STATE 列舉值的呼叫端配置變數位址。 這個參數是必要的,而且不能是 NULL

[out] phrFailureWriter

呼叫端配置的變數位址,接收寫入器針對 CVssWriterEx2::SetWriterFailureEx 方法之 hrWriter 參數傳回的 HRESULT 失敗碼。

以下是支援的值。

意義
S_OK
寫入器成功。
VSS_E_WRITERERROR_INCONSISTENTSNAPSHOT
陰影複製只包含寫入器所需的磁碟區子集,以正確備份應用程式元件。
VSS_E_WRITERERROR_OUTOFRESOURCES
寫入器記憶體不足或其他系統資源。 處理此錯誤碼的建議方法是等候 10 分鐘,然後重複作業,最多三次。
VSS_E_WRITERERROR_TIMEOUT
寫入器作業因為凍結和解除凍結事件之間的逾時而失敗。 處理此錯誤碼的建議方法是等候 10 分鐘,然後重複作業,最多三次。
VSS_E_WRITERERROR_RETRYABLE
寫入器因為重新啟動整個備份、還原或陰影複製建立程式時可能發生的錯誤而失敗。 處理此錯誤碼的建議方法是等候 10 分鐘,然後重複作業,最多三次。
VSS_E_WRITERERROR_NONRETRYABLE
寫入器作業失敗,因為建立另一個陰影複製時可能會遞歸的錯誤。 如需詳細資訊,請參閱 VSS 下的事件和錯誤處理
VSS_E_WRITER_NOT_RESPONDING
寫入器沒有回應。
VSS_E_WRITER_STATUS_NOT_AVAILABLE
寫入器狀態不適用於一或多個寫入器。 寫入器可能已達到可用備份和還原會話的數目上限。
VSS_E_WRITERERROR_PARTIAL_FAILURE
寫入器正在報告一或多個元件層級錯誤。 若要擷取錯誤,要求者必須使用 IVssComponentEx2::GetFailure 方法。

[out, optional] phrApplication

呼叫端配置的變數位址,接收寫入器針對 CVssWriterEx2::SetWriterFailureEx 方法之 hrApplication 參數傳遞的傳回碼。 此參數是選擇性的,可以是 NULL

[out, optional] pbstrApplicationMessage

接收寫入器針對 SetWriterFailureEx 方法之 wszApplicationMessage 參數傳遞之應用程式失敗訊息的變數位址。 此參數是選擇性的,可以是 NULL

傳回值

以下是此方法的有效傳回碼。

意義
S_OK
0x00000000L
已成功傳回指定寫入器的狀態。 請注意,必須檢查 phrFailureWriter 參數的值,以確認寫入器是否成功。 寫入器失敗碼可以是 VsWriter.h 和 寫入器錯誤和 Vetoes 中列出的程式代碼。
E_INVALIDARG
0x80070057L
pnStatuspidWriterpbstrWriterpidInstance 參數為 NULL
E_OUTOFMEMORY
0x8007000EL
呼叫端記憶體不足或其他系統資源。
VSS_E_BAD_STATE
0x80042301L
備份元件物件未初始化、此方法已在還原作業期間呼叫,或此方法未在正確的順序內呼叫。
VSS_E_OBJECT_NOT_FOUND
0x80042308L
iWriter 參數會指定不存在的寫入器。

備註

要求者必須呼叫異步操作 IVssBackupComponents::GatherWriterStatus 並等候它完成,再呼叫 IVssBackupComponentsEx3::GetWriterStatusEx

如果此方法傳回VSS_E_WRITERERROR_PARTIAL_FAILURE,要求者應該使用 IVssComponentEx2::GetFailure 方法來擷取元件層級錯誤。

當呼叫端完成存取此方法傳回的狀態資訊時,應該呼叫 SysFreeString 以釋放 pbstrWriterpbstrApplicationMessage 參數所持有的記憶體。

規格需求

需求
最低支援的用戶端 Windows 7 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 R2 [僅限傳統型應用程式]
目標平台 Windows
標頭 vsbackup.h (包括 VsBackup.h、Vss.h、VsWriter.h)

另請參閱

CVssWriterEx2::SetWriterFailureEx

IVssBackupComponents::GetWriterStatus

IVssBackupComponentsEx3