private void Dispose(bool fDisposing) { if (fDisposing) { GC.SuppressFinalize(this); } System.Deployment.Internal.Isolation.StoreTransactionOperation[] operationArray = this._storeOps; this._storeOps = null; if (operationArray != null) { for (int i = 0; i != operationArray.Length; i++) { System.Deployment.Internal.Isolation.StoreTransactionOperation operation = operationArray[i]; if (operation.Data.DataPtr != IntPtr.Zero) { switch (operation.Operation) { case System.Deployment.Internal.Isolation.StoreTransactionOperationType.SetCanonicalizationContext: Marshal.DestroyStructure(operation.Data.DataPtr, typeof(System.Deployment.Internal.Isolation.StoreOperationSetCanonicalizationContext)); break; case System.Deployment.Internal.Isolation.StoreTransactionOperationType.StageComponent: Marshal.DestroyStructure(operation.Data.DataPtr, typeof(System.Deployment.Internal.Isolation.StoreOperationStageComponent)); break; case System.Deployment.Internal.Isolation.StoreTransactionOperationType.PinDeployment: Marshal.DestroyStructure(operation.Data.DataPtr, typeof(System.Deployment.Internal.Isolation.StoreOperationPinDeployment)); break; case System.Deployment.Internal.Isolation.StoreTransactionOperationType.UnpinDeployment: Marshal.DestroyStructure(operation.Data.DataPtr, typeof(System.Deployment.Internal.Isolation.StoreOperationUnpinDeployment)); break; case System.Deployment.Internal.Isolation.StoreTransactionOperationType.StageComponentFile: Marshal.DestroyStructure(operation.Data.DataPtr, typeof(System.Deployment.Internal.Isolation.StoreOperationStageComponentFile)); break; case System.Deployment.Internal.Isolation.StoreTransactionOperationType.InstallDeployment: Marshal.DestroyStructure(operation.Data.DataPtr, typeof(System.Deployment.Internal.Isolation.StoreOperationInstallDeployment)); break; case System.Deployment.Internal.Isolation.StoreTransactionOperationType.UninstallDeployment: Marshal.DestroyStructure(operation.Data.DataPtr, typeof(System.Deployment.Internal.Isolation.StoreOperationUninstallDeployment)); break; case System.Deployment.Internal.Isolation.StoreTransactionOperationType.SetDeploymentMetadata: Marshal.DestroyStructure(operation.Data.DataPtr, typeof(System.Deployment.Internal.Isolation.StoreOperationSetDeploymentMetadata)); break; case System.Deployment.Internal.Isolation.StoreTransactionOperationType.Scavenge: Marshal.DestroyStructure(operation.Data.DataPtr, typeof(System.Deployment.Internal.Isolation.StoreOperationScavenge)); break; } Marshal.FreeCoTaskMem(operation.Data.DataPtr); } } } }
private System.Deployment.Internal.Isolation.StoreTransactionOperation[] GenerateStoreOpsList() { System.Deployment.Internal.Isolation.StoreTransactionOperation[] operationArray = new System.Deployment.Internal.Isolation.StoreTransactionOperation[this._list.Count]; for (int i = 0; i != this._list.Count; i++) { object structure = this._list[i]; Type type = structure.GetType(); operationArray[i].Data.DataPtr = Marshal.AllocCoTaskMem(Marshal.SizeOf(structure)); Marshal.StructureToPtr(structure, operationArray[i].Data.DataPtr, false); if (type == typeof(System.Deployment.Internal.Isolation.StoreOperationSetCanonicalizationContext)) { operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.SetCanonicalizationContext; } else if (type == typeof(System.Deployment.Internal.Isolation.StoreOperationStageComponent)) { operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.StageComponent; } else if (type == typeof(System.Deployment.Internal.Isolation.StoreOperationPinDeployment)) { operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.PinDeployment; } else if (type == typeof(System.Deployment.Internal.Isolation.StoreOperationUnpinDeployment)) { operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.UnpinDeployment; } else if (type == typeof(System.Deployment.Internal.Isolation.StoreOperationStageComponentFile)) { operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.StageComponentFile; } else if (type == typeof(System.Deployment.Internal.Isolation.StoreOperationInstallDeployment)) { operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.InstallDeployment; } else if (type == typeof(System.Deployment.Internal.Isolation.StoreOperationUninstallDeployment)) { operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.UninstallDeployment; } else if (type == typeof(System.Deployment.Internal.Isolation.StoreOperationSetDeploymentMetadata)) { operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.SetDeploymentMetadata; } else { if (type != typeof(System.Deployment.Internal.Isolation.StoreOperationScavenge)) { throw new Exception("How did you get here?"); } operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.Scavenge; } } return(operationArray); }
// Constructors public TransactionOperation(System.Deployment.Internal.Isolation.StoreTransactionOperation operation, uint disposition, int hresult) { }
private System.Deployment.Internal.Isolation.StoreTransactionOperation[] GenerateStoreOpsList() { System.Deployment.Internal.Isolation.StoreTransactionOperation[] operationArray = new System.Deployment.Internal.Isolation.StoreTransactionOperation[this._list.Count]; for (int i = 0; i != this._list.Count; i++) { object structure = this._list[i]; Type type = structure.GetType(); operationArray[i].Data.DataPtr = Marshal.AllocCoTaskMem(Marshal.SizeOf(structure)); Marshal.StructureToPtr(structure, operationArray[i].Data.DataPtr, false); if (type == typeof(System.Deployment.Internal.Isolation.StoreOperationSetCanonicalizationContext)) { operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.SetCanonicalizationContext; } else if (type == typeof(System.Deployment.Internal.Isolation.StoreOperationStageComponent)) { operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.StageComponent; } else if (type == typeof(System.Deployment.Internal.Isolation.StoreOperationPinDeployment)) { operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.PinDeployment; } else if (type == typeof(System.Deployment.Internal.Isolation.StoreOperationUnpinDeployment)) { operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.UnpinDeployment; } else if (type == typeof(System.Deployment.Internal.Isolation.StoreOperationStageComponentFile)) { operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.StageComponentFile; } else if (type == typeof(System.Deployment.Internal.Isolation.StoreOperationInstallDeployment)) { operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.InstallDeployment; } else if (type == typeof(System.Deployment.Internal.Isolation.StoreOperationUninstallDeployment)) { operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.UninstallDeployment; } else if (type == typeof(System.Deployment.Internal.Isolation.StoreOperationSetDeploymentMetadata)) { operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.SetDeploymentMetadata; } else { if (type != typeof(System.Deployment.Internal.Isolation.StoreOperationScavenge)) { throw new Exception("How did you get here?"); } operationArray[i].Operation = System.Deployment.Internal.Isolation.StoreTransactionOperationType.Scavenge; } } return operationArray; }