SEDO 対応オブジェクトの明示的ロックを取得するには
SMS_ObjectLockWMI クラスのインスタンスを作成するRequestLockメソッドのメソッド パラメーター オブジェクトを取得します。ロックするオブジェクトのオブジェクト パスを
ObjectRelPathプロパティに割り当てます。RequestTransferプロパティをtrueに設定します。InvokeMethodOptionsオブジェクト インスタンスを作成します。 Context プロパティで、名前と値のペアを追加します。 名前は "ObjectLockContext" で、値は Guid などの一意の値である必要があります。 "MachineName" とロックを要求するコンピューターの名前を使用して、別の名前と値のペアを追加します。SMS_ObjectLockインスタンスで InvokeMethod を呼び出します。InvokeMethod は、
SMS_ObjectLockRequestインスタンスを返します。RequestStateプロパティとLockStateプロパティを確認して、要求の成功または失敗に関する詳細情報を取得します。
例
次の例では、 SMS_ConfigurationItem オブジェクト インスタンスに対して明示的なロックを要求します。
class Program
{
static void Main(string[] args)
{
ManagementScope scope = new ManagementScope(@"\\siteservername\root\sms\site_ABC");
RequestLock(scope);
}
public static void RequestLock(ManagementScope scope)
{
ManagementPath path = new ManagementPath("SMS_ObjectLock");
ManagementClass objectLock = new ManagementClass(scope, path, null);
ManagementBaseObject inParams = objectLock.GetMethodParameters("RequestLock");
inParams["ObjectRelPath"] = "SMS_ConfigurationItem.CI_ID=30";
inParams["RequestTransfer"] = true;
InvokeMethodOptions options = new InvokeMethodOptions();
options.Context.Add("ObjectLockContext", Guid.NewGuid().ToString());
options.Context.Add("MachineName", "RequestingComputer");
ManagementBaseObject result = objectLock.InvokeMethod("RequestLock", inParams, options);
}
}
SMS_ObjectLockRequest オブジェクトには、次のプロパティが含まれています。
| プロパティ | 説明 |
|---|---|
| RequestID | 要求の一意識別子。 |
| ObjectRelPath | ロックが要求されるオブジェクトのパス。 |
| RequestState | 要求の成功または失敗を示します。 |
| LockState | 要求されたロックの現在の状態を示します。 |
| AssignedUser | 要求されたロックの現在割り当てられているユーザーを示します。 |
| AssignedObjectLockContext | ロックが現在割り当てられている ObjectLockContext を示します。 |
| AssignedMachine | 要求されたロックの現在割り当てられているコンピューターを示します。 |
| AssignedSiteCode | 要求されたロックの現在のサイトを示します。 |
| AssignedTimeUTC | 要求されたロックが割り当てられた時刻を示します。 |
RequestState 次の表に、使用可能な要求状態の値を示します。 要求の状態 Granted、GrantedAfterTimeout、GrantedLockWasOrphaned は要求が成功したことを示し、ユーザーはオブジェクトに変更を加えて保存できます。 その他のすべての要求は、エラーを示します。
| RequestStateID | RequestStateName |
|---|---|
| 0 | 不明 |
| 2 | 要求済み |
| 3 | RequestedCanceled |
| 4 | ResponseReceived |
| 10 | Granted |
| 11 | GrantedAfterTimeout |
| 12 | GrantedLockWasOrphaned |
| 20 | DeniedLockAlreadyAssigned |
| 21 | DeniedInvalidObjectVersion |
| 22 | DeniedLockNotFound |
| 23 | DeniedLockNotLocal |
| 24 | DeniedRequestTimedOut |
| 50 | エラー |
| 52 | ErrorRequestNotFound |
| 53 | ErrorRequestTimedOut |
LockState 次の表に、使用可能なロック状態の値を示します。
| LockStateID | LockStateName |
|---|---|
| 0 | 未割り当て |
| 1 | 割り当て済み |
| 2 | 要求済み |
| 3 | PendingAssignment |
| 4 | TimedOut |
| 5 | NotFound |
コードのコンパイル
C# の例では、次のものが必要です。
名前空間
System
System.Management
Assembly
堅牢なプログラミング
エラー処理の詳細については、「Configuration Manager エラーについて」を参照してください。