Cómo adquirir un bloqueo en un objeto SEDO-Enabled
Para adquirir un bloqueo explícito en un objeto habilitado para SEDO
Creación de una instancia de la
SMS_ObjectLock
clase WMIObtenga el objeto de parámetros de método para el
RequestLock
método .Asigne la ruta de acceso del objeto que desea bloquear a la
ObjectRelPath
propiedad .Establezca la
RequestTransfer
propiedad entrue
.Cree una instancia de
InvokeMethodOptions
objeto. En la propiedad Context, agregue un par nombre-valor. El nombre debe ser "ObjectLockContext" y el valor debe ser un valor único, como un Guid. Agregue otro par nombre-valor con "MachineName" y el nombre del equipo que solicita el bloqueo.Llame a InvokeMethod en la
SMS_ObjectLock
instancia.InvokeMethod devolverá una
SMS_ObjectLockRequest
instancia de . Compruebe lasRequestState
propiedades yLockState
para obtener más información sobre el éxito o el error de la solicitud.
Ejemplo
En el ejemplo siguiente se solicita un bloqueo explícito en una SMS_ConfigurationItem
instancia de objeto.
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);
}
}
El objeto SMS_ObjectLockRequest contiene las siguientes propiedades:
Propiedad | Descripción |
---|---|
RequestID | Identificador único de la solicitud. |
ObjectRelPath | Ruta de acceso del objeto para el que se solicita el bloqueo. |
RequestState | Indica el éxito o el error de la solicitud. |
LockState | Indica el estado actual del bloqueo solicitado. |
AssignedUser | Indica el usuario asignado actualmente del bloqueo solicitado. |
AssignedObjectLockContext | Indica ObjectLockContext al que está asignado actualmente el bloqueo. |
AssignedMachine | Indica el equipo asignado actualmente del bloqueo solicitado. |
AssignedSiteCode | Indica el sitio actualmente del bloqueo solicitado. |
AssignedTimeUTC | Indica la hora a la que se asignó el bloqueo solicitado. |
RequestState
En la tabla siguiente se muestran los posibles valores de estado de solicitud. Los estados de solicitud Granted, GrantedAfterTimeout y GrantedLockWasOrphaned indican una solicitud correcta y, a continuación, el usuario puede realizar y guardar modificaciones en el objeto. Todas las demás solicitudes indican un error.
RequestStateID | RequestStateName |
---|---|
0 | Unknown |
2 | Solicitado |
3 | RequestedCanceled |
4 | ResponseReceived |
10 | Concedido |
11 | GrantedAfterTimeout |
12 | GrantedLockWasOrphaned |
20 | DeniedLockAlreadyAssigned |
21 | DeniedInvalidObjectVersion |
22 | DeniedLockNotFound |
23 | DeniedLockNotLocal |
24 | DeniedRequestTimedOut |
50 | Error |
52 | ErrorRequestNotFound |
53 | ErrorRequestTimedOut |
LockState
En la tabla siguiente se muestran los posibles valores de estado de bloqueo.
LockStateID | LockStateName |
---|---|
0 | Sin asignar |
1 | Asignado |
2 | Solicitado |
3 | PendingAssignment |
4 | TimedOut |
5 | NotFound |
Compilar el código
El ejemplo de C# requiere:
Espacios de nombres
Sistema
System.Management
Ensamblado
Programación sólida
Para obtener más información sobre el control de errores, consulte Acerca de los errores de Configuration Manager.