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 つ以上の値を指定できます。
[in] dwTimeout
指定したメディアの割り当てに許容される最大時間 (ミリ秒単位)。 このパラメーターが INFINITE の場合、関数はタイムアウトしません。このパラメーターが 0 の場合、メディアを待機します。 dwOptions パラメーターで NTMS_ALLOCATE_ERROR_IF_UNAVAILABLE が指定されている場合、この関数はそれ以上のメディアの要求をキューに入れないことに注意してください。
[out] lpAllocateInformation
メディアが取得されたソース メディア プールを受け取る NTMS_ALLOCATION_INFORMATION 構造体へのポインター。 このパラメーターは、NULL でもかまいません。
戻り値
この関数は、次のいずれかの値を返します。
値 | 説明 |
---|---|
|
メディアのメディア プールへのNTMS_CONTROL_ACCESSは拒否されます。 その他のセキュリティ エラーも考えられますが、セキュリティ サブシステム エラーを示します。
Windows XP: メディアのメディア プールへのNTMS_MODIFY_ACCESSは拒否されます。 |
|
オペレーターは、新しいメディアの要求を取り消しました。 |
|
データベースにアクセスできないか、破損しています。 |
|
データベースがいっぱいです。 |
|
中間リソースは使用できません。たとえば、空きメディア プールは使用できません。 |
|
セッション ハンドルがないか、無効です。 |
|
NTMS_ALLOCATE_NEXT フラグを使用するときに、パーティション ID または LMID が入力時に無効でした。 |
|
メディア プール ID が無効です。 |
|
メディアまたはメディア プール ID がありません。 |
|
指定されたメディアはオフラインであり、割り当てることができません。 |
|
指定されたタイムアウト イベント内にメディアが割り当てされていません。 |
|
処理中に割り当てエラーが発生しました。 |
|
関数は成功しました。 |
|
タイムアウト イベントは、メディアが使用可能になる前に期限切れになりました。 |
解説
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:
- は、指定されたメディア プールにメディアを移動します。
- は、メディアの状態を割り当てられた 状態に変更します。
- は LMID を返します。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | ntmsapi.h |
Library | Ntmsapi.lib |
[DLL] | Ntmsapi.dll |