AllocateNtmsMedia 関数 (ntmsapi.h)

[リムーバブル 記憶域マネージャー は、Windows 7 および Windows Server 2008 R2 以降では使用できなくなりました。

AllocateNtmsMedia 関数は、使用可能なメディアの一部を割り当てます。

構文

DWORD AllocateNtmsMedia(
  [in]  HANDLE                        hSession,
  [in]  LPNTMS_GUID                   lpMediaPool,
  [in]  LPNTMS_GUID                   lpPartition,
  [out] LPNTMS_GUID                   lpMediaId,
  [in]  DWORD                         dwOptions,
  [in]  DWORD                         dwTimeout,
  [out] LPNTMS_ALLOCATION_INFORMATION lpAllocateInformation
);

パラメーター

[in] hSession

OpenNtmsSession 関数によって返されるセッションを処理します。

[in] lpMediaPool

メディアの割り当て元となるメディア プールの一意識別子。 割り当てにはアプリケーション プールのみを指定できます。

[in] lpPartition

論理メディア識別子 (LMID) として使用する側の部分識別子。 サイドが [使用可能] または [インポート] 状態である必要があります。 この機能は、特定の側を割り当てるか、メディアをインポートするために使用できます。 このパラメーターは省略可能です。

[out] lpMediaId

割り当てられたメディアの LMID。 メディアを割り当てることができない場合、このパラメーターは NULL です

[in] dwOptions

オプション。 このパラメーターには、次の 1 つ以上の値を指定できます。

説明
NTMS_ALLOCATE_ERROR_IF_UNAVAILABLE
指定した制約で割り当てることができるメディアがない場合に、新しいメディアに対するオペレーター要求の送信を禁止します。
NTMS_ALLOCATE_NEW
別のアプリケーションの論理メディアと共有できない、指定されたメディアの側を割り当てます。 たとえば、この値は両面光学メディアの 2 番目の側を予約します。
NTMS_ALLOCATE_NEXT
NTMS_ALLOCATE_NEW値で割り当てられたマルチサイド メディアの次の側を割り当てます。 これにより、1 つのアプリケーションで両面メディアの両側を使用し、アプリケーションが物理メディア上のすべてのデータを確実に所有できるようになります。

メディアのすべての辺が既に割り当てられている場合、割り当て要求は失敗します。

[in] dwTimeout

指定したメディアの割り当てに許容される最大時間 (ミリ秒単位)。 このパラメーターが INFINITE の場合、関数はタイムアウトしません。このパラメーターが 0 の場合、メディアを待機します。 dwOptions パラメーターで NTMS_ALLOCATE_ERROR_IF_UNAVAILABLE が指定されている場合、この関数はそれ以上のメディアの要求をキューに入れないことに注意してください。

[out] lpAllocateInformation

メディアが取得されたソース メディア プールを受け取る NTMS_ALLOCATION_INFORMATION 構造体へのポインター。 このパラメーターは、NULL でもかまいません。

戻り値

この関数は、次のいずれかの値を返します。

説明
ERROR_ACCESS_DENIED
メディアのメディア プールへのNTMS_CONTROL_ACCESSは拒否されます。 その他のセキュリティ エラーも考えられますが、セキュリティ サブシステム エラーを示します。

Windows XP: メディアのメディア プールへのNTMS_MODIFY_ACCESSは拒否されます。

ERROR_CANCELLED
オペレーターは、新しいメディアの要求を取り消しました。
ERROR_DATABASE_FAILURE
データベースにアクセスできないか、破損しています。
ERROR_DATABASE_FULL
データベースがいっぱいです。
ERROR_DEVICE_NOT_AVAILABLE
中間リソースは使用できません。たとえば、空きメディア プールは使用できません。
ERROR_INVALID_HANDLE
セッション ハンドルがないか、無効です。
ERROR_INVALID_MEDIA
NTMS_ALLOCATE_NEXT フラグを使用するときに、パーティション ID または LMID が入力時に無効でした。
ERROR_INVALID_MEDIA_POOL
メディア プール ID が無効です。
ERROR_INVALID_PARAMETER
メディアまたはメディア プール ID がありません。
ERROR_MEDIA_OFFLINE
指定されたメディアはオフラインであり、割り当てることができません。
ERROR_MEDIA_UNAVAILABLE
指定されたタイムアウト イベント内にメディアが割り当てされていません。
ERROR_NOT_ENOUGH_MEMORY
処理中に割り当てエラーが発生しました。
ERROR_SUCCESS
関数は成功しました。
ERROR_TIMEOUT
タイムアウト イベントは、メディアが使用可能になる前に期限切れになりました。

解説

AllocateNtmsMedia 関数は LMID を返します。 メディア プールのポリシーに応じて、指定されたメディア プールにオンラインの使用可能なメディアが含まれていない場合、 AllocateNtmsMedia は指定されたメディア を空きメディア プールで検索して、指定したメディア プールに移動する場合があります。 指定されたメディア プールのメディアが最初に割り当てられ、次に空きメディアが移動されて割り当てられます。

メディア プールにオンラインの使用可能なメディアが含まれている場合は、プールのメディアが割り当てられます。

メディア プールが空きプールからメディアを自動的に割り当てられるように構成されていて、空きプールにオンラインの使用可能なメディアが含まれている場合、メディアは指定されたプールに移動され、割り当てられます。

Windows Server 2003: メディアが空きプールから割り当てられている場合は、空きプールにNTMS_USE_ACCESSし、宛先プールにNTMS_CONTROL_ACCESSする必要があります。 フリー・プールがソース・メディア・プールでない場合は、ソース・プールと宛先プールの両方でNTMS_CONTROL_ACCESSが必要です。

NTMS_ALLOCATE_NEXT値を指定する場合、 lpMediaId パラメーターは呼び出し時に有効なメディア ID を指す必要があります。 この場合、 lpMediaId は IN および OUT パラメーターとして使用されます。 lpMediaId で指定された両面メディアの次の側が割り当てられ、新しいパーティション ID が lpMediaId を介して返されます (渡された元のメディア ID が上書きされます)。

NTMS_ALLOCATE_ERROR_IF_UNAVAILABLEを指定した場合、使用可能なメディアがない場合は、ERROR_MEDIA_ UNAVAILABLE が返されます。

必要に応じて、RSM は新規または使用可能なメディアを挿入するオペレーター要求を生成します。 演算子要求が処理される前に dwTimeout パラメーターで指定された時間が経過した場合、RSM は ERROR_TIMEOUTを返し、オペレーター要求を削除します。

ユーザーが割り当て要求を取り消すと、RSM はERROR_CANCELLEDを返します。

オペレーター要求が満たされたことをユーザーが示した場合、要求は削除され、RSM はプロセスを再試行します。

アプリケーションでデータを含む新しいメディアが必要な場合、ユーザーまたは管理者はメディアをライブラリまたはドライブに配置します。 RSM はメディアを識別し、インポート プールに配置します。 アプリケーションはインポート プールを検索し、メディアをアプリケーション プールに移動して割り当てます。 このルーチン プロセスは、 AllocateNtmsMedia の 1 回の呼び出しを通じて合理化し、アトミックにすることができます。 インポート プールを検索した後、アプリケーションは AllocateNtmsMedia を呼び出し、側のパーティション ID を lpPartId パラメーターの値として渡すことができます。 次に RSM:

  1. は、指定されたメディア プールにメディアを移動します。
  2. は、メディアの状態を割り当てられた 状態に変更します。
  3. は LMID を返します。
メモ 両面メディアの場合、フリップ側はインポート状態のままであり、インポートされるまで使用できません。
 

要件

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

関連項目

DeallocateNtmsMedia

Media Services 関数

NTMS_ALLOCATION_INFORMATION