IVdsVolume::SetFlags 方法 (vds.h)

[從 Windows 8 和 Windows Server 2012 開始,虛擬磁碟服務 COM 介面會由 Windows 記憶體管理 API 取代。

設定磁碟區旗標。

語法

HRESULT SetFlags(
  [in] ULONG ulFlags,
  [in] BOOL  bRevertOnClose
);

參數

[in] ulFlags

由 VDS_VOLUME_FLAG 列舉的旗標。 呼叫端可以設定下列旗標:

  • VDS_VF_LBN_REMAP_ENABLED
  • VDS_VF_HIDDEN
  • VDS_VF_READONLY
  • VDS_VF_NO_DEFAULT_DRIVE_LETTER
  • VDS_VF_INSTALLABLE
  • VDS_VF_SHADOW_COPY

[in] bRevertOnClose

如果 為TRUE,則會暫時設定旗標。 當呼叫端釋放磁碟區對象的最後一個參考、呼叫 IVdsVolume::ClearFlags 或卸除磁碟區時,VDS 會將每個旗標重設為上一個狀態,但當整個磁碟上設定旗標時, (請參閱一節中的數據表,以取得詳細數據) 。 在整個磁碟上設定旗標時,必須呼叫 IVdsVolume::ClearFlags 方法來重設旗標。

傳回值

這個方法可以傳回標準 HRESULT 值,例如E_INVALIDARG或E_OUTOFMEMORY,以及 VDS 特定的傳回值。 它也可以使用 HRESULT_FROM_WIN32 宏傳回已轉換的系統錯誤碼。 錯誤可能來自 VDS 本身,或來自正在使用的基礎 VDS 提供者 。 可能的傳回值包括下列專案。

傳回碼/值 描述
S_OK
旗標已設定。
VDS_E_LBN_REMAP_ENABLED_FLAG
0x80042456L
提供者不支援 VDS_VF_LBN REMAP_ENABLED 磁碟區旗標。
VDS_E_NO_DRIVELETTER_FLAG
0x80042457L
提供者不支援 VDS_VF_NO DRIVELETTER 磁碟區旗標。
VDS_E_REVERT_ON_CLOSE
0x80042458L
如果已設定VDS_VF_HIDDENVDS_VF_READONLY磁碟區旗標,bRevertOnClose 應設定為 true。
VDS_E_REVERT_ON_CLOSE_SET
0x80042459L
某些磁碟區旗標已設定為 true。 您必須先清除這些旗標,然後呼叫此方法,然後將 bRevertOnClose 參數再次設定為 true。 VDS_E_INVALID_OPERATION傳回值也可以指出此條件。

備註

VDS_VF_READONLYVDS_VF_HIDDENVDS_VF_NO_DEFAULT_DRIVE_LETTER旗標會根據 MBR 或 GPT) (基本或動態) 和分割 (區樣式 (磁碟類型而有所不同。 範圍是磁碟型或磁碟區型,如下列條件所述:

  • 如果磁碟是基本和 MBR,則在磁碟區上設定其中一個旗標會影響目前的磁碟區,以及所有未來在磁碟上建立指定屬性的磁碟區。
  • 如果磁碟是基本且 GPT、動態和 MBR 或動態和 GPT,則磁碟區上的其中一個旗標僅適用於該特定磁碟區。
下表識別 MBR 基本磁碟、GPT 基本磁碟和 MBR 或 GPT 動態磁碟上每個磁碟區旗標的範圍。
旗標 MBR 基本磁碟 GPT 基本磁碟 MBR 或 GPT 動態磁碟
VDS_VF_LBN_REMAP_ENABLED 無法設定。 無法設定。 如果第三方磁碟區管理員支援,請在磁碟區上設定 。
VDS_VF_HIDDEN 在整個磁碟上設定。 僅) 在磁碟區上設定 (數據分割。 在磁碟區上設定。
VDS_VF_READONLY 在整個磁碟上設定。 僅) 在磁碟區上設定 (數據分割。 在磁碟區上設定。
VDS_VF_NO_DEFAULT_DRIVE_LETTER 在整個磁碟上設定。 在分割區上設定。 請參閱 VDS_VOLUME_FLAG
VDS_VF_SHADOW_COPY 在整個磁碟上設定。 僅) 在磁碟區上設定 (數據分割。 在磁碟區上設定。
VDS_VF_INSTALLABLE 無法設定。 無法設定。 在磁碟區上設定。
 

如果 bRevertOnCloseTRUE ,且磁碟是 MBR 基本磁碟,然後刪除磁碟區,則旗標仍會在整個磁碟上設定,而且旗標會套用至磁碟上建立的任何新磁碟區。 IVdsAdvancedDisk::Clean 接著必須用來清除旗標。

若要在動態磁碟上建立開機磁碟區,您必須為磁碟區設定 VDS_VF_INSTALLABLE 旗標,然後呼叫 IVdsVolumeMF::Format 方法來格式化磁碟區。

如果磁碟區包含下列一或多個旗標,這個方法就會失敗:

  • VDS_VF_SYSTEM
  • VDS_VF_BOOT
  • VDS_VF_PAGEFILE
  • VDS_VF_HIBERNATION
  • VDS_VF_CRASHDUMP

除非 bRevertOnCloseTRUE,否則指定VDS_VF_HIDDENVDS_VF_READONLY會強制卸除和重新掛接磁碟區。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 vds.h
程式庫 Uuid.lib

另請參閱

IVdsAdvancedDisk::Clean

IVdsVolume

IVdsVolume::ClearFlags

VDS_VOLUME_FLAG