IVdsLun::D elete メソッド (vds.h)

[Windows 8とWindows Server 2012以降、仮想ディスク サービス COM インターフェイスは Windows Storage Management API に置き換えられます。

LUN とそのすべてのプレックスを削除します。 LUN 上のデータはすべて失われます。 VDS は、LUN に割り当てられたエクステントを解放します。

構文

HRESULT Delete();

戻り値

このメソッドは、E_OUTOFMEMORYや VDS 固有の戻り値など、標準の HRESULT 値を返すことができます。 また、HRESULT_FROM_WIN32 マクロを使用して、変換されたシステム エラー コードを返すこともできます。 エラーは、VDS 自体または使用されている基になる VDS プロバイダー から発生する可能性があります。 可能な戻り値は次のとおりです。

リターン コード/値 説明
VDS_E_PROVIDER_CACHE_CORRUPT
0x8004241FL
この戻り値は、配列に関する情報をキャッシュするプロバイダー内のソフトウェアまたは通信の問題を通知します。 キャッシュを復元するには、 IVdsHwProvider::Reenumerate メソッドの後に IVdsHwProvider::Refresh メソッドを使用します。
VDS_E_OBJECT_DELETED
0x8004240BL
LUN オブジェクトが存在しなくなりました。
VDS_E_OBJECT_STATUS_FAILED
0x80042431L
LUN が失敗状態であり、要求された操作を実行できません。
VDS_E_ANOTHER_CALL_IN_PROGRESS
0x80042404L
別の操作が進行中です。この操作は、前の操作または操作が完了するまで続行できません。

解説

アプリケーションが IVdsLun インターフェイスへの参照を保持し、IVdsLun::D elete を呼び出す場合、実装者は、そのインターフェイスの GetProperties などのメソッドへの後続の呼び出しでVDS_E_OBJECT_DELETEDを返す必要があります。 この場合、インターフェイスは未処理の参照を持ち、有効ですが、基になるオブジェクトは存在しなくなります。

ターゲット マシンにマスクされていない LUN が削除された場合、バスの再スキャンが実行されるまで、そのマシンでの LUN の可視性が変更されない可能性があります。 ターゲット マシン上の VDS アプリケーションは、 IVdsService::Reenumerate を呼び出してバスの再スキャンを開始します。 バスの再スキャンの開始は、ハードウェア プロバイダーではなく、VDS アプリケーションの責任です。

IVdsSubSystem::QueryLuns が同時に実行されている別のスレッドで呼び出されている間に、IVdsLun::D elete などのメソッドが 1 つのスレッドで呼び出されると、プロバイダー アクセス違反になる可能性があります。 ハードウェア プロバイダーは、このような同期の問題を最小限に抑えるために、必要に応じてこれらのメソッドをシリアル化する役割を担います。

ハードウェア プロバイダーは、LUN を再利用できるように LUN のパーティション情報を削除する役割を担います。 LUN が MBR ディスクの場合、これはディスクの最初と最後の 1 MB にゼロを書き込むことで実現されます。 GPT ディスクの場合は、ディスクの最初と最後の 16 KB にゼロを書き込む必要があります。

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー vds.h
Library Uuid.lib

関連項目

IVdsHwProvider::Reenumerate

IVdsHwProvider::Refresh

IVdsLun

IVdsLun::GetProperties