Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Tools / xws_reg / System / ServiceModel / Install / ServiceHandle.cs / 1 / ServiceHandle.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Install { using Microsoft.Win32.SafeHandles; using System; using System.ComponentModel; using System.Diagnostics; using System.Runtime.ConstrainedExecution; using System.Runtime.InteropServices; using System.Security.AccessControl; using System.Text; internal class ServiceHandle : SafeHandleZeroOrMinusOneIsInvalid { internal ServiceHandle() : base(true) { } internal void ChangeServiceConfig(int serviceType, string binaryPathName, string dependencies, string displayName) { #pragma warning suppress 56523 // [....]; Win32Exception default constructor calls Marshal.GetLastWin32Error() internally. if (!NativeMethods.ChangeServiceConfig(this, serviceType, NativeMethods.SERVICE_NO_CHANGE, NativeMethods.SERVICE_NO_CHANGE, binaryPathName, null, IntPtr.Zero, dependencies, null, null, displayName)) { throw new Win32Exception(); } } internal void Delete() { #pragma warning suppress 56523 // [....]; Win32Exception default constructor calls Marshal.GetLastWin32Error() internally. if (!NativeMethods.DeleteService(this)) { throw new Win32Exception(); } } internal QUERY_SERVICE_CONFIG QueryServiceConfig() { QUERY_SERVICE_CONFIG serviceConfig = new QUERY_SERVICE_CONFIG(); int win32Error = ErrorCodes.NoError; int bufferSize = 0; using (QueryServiceConfigHandle serviceConfigHandle = new QueryServiceConfigHandle(IntPtr.Zero)) { NativeMethods.QueryServiceConfig(this, serviceConfigHandle, 0, out bufferSize); win32Error = Marshal.GetLastWin32Error(); if (ErrorCodes.ErrorInsufficientBuffer != win32Error) { throw new Win32Exception(win32Error); } } using (QueryServiceConfigHandle serviceConfigHandle = new QueryServiceConfigHandle(bufferSize)) { if (NativeMethods.QueryServiceConfig(this, serviceConfigHandle, bufferSize, out bufferSize)) { serviceConfig = serviceConfigHandle.ServiceConfig; } else { win32Error = Marshal.GetLastWin32Error(); throw new Win32Exception(win32Error); } } return serviceConfig; } protected override bool ReleaseHandle() { #pragma warning suppress 56523 // [....]; Win32Exception default constructor calls Marshal.GetLastWin32Error() internally. bool retVal = NativeMethods.CloseServiceHandle(handle); if (!retVal) { throw new Win32Exception(); } return retVal; } internal void SetDescription(string description) { SERVICE_DESCRIPTION serviceDescription; serviceDescription.lpDescription = description; #pragma warning suppress 56523 // [....]; Win32Exception default constructor calls Marshal.GetLastWin32Error() internally. if (!NativeMethods.ChangeServiceDescription(this, NativeMethods.SERVICE_CONFIG_DESCRIPTION, ref serviceDescription)) { throw new Win32Exception(); } } internal unsafe void SetFailureActions(TimeSpan resetPeriod, TimeSpan[] restartPeriods) { SERVICE_FAILURE_ACTIONS failureActions = new SERVICE_FAILURE_ACTIONS(); Debug.Assert(resetPeriod.TotalSeconds <= uint.MaxValue); Debug.Assert(resetPeriod.TotalSeconds >= 0); failureActions.dwResetPeriod = (uint) resetPeriod.TotalSeconds; SC_ACTION[] actions = null; if (restartPeriods != null) { actions = new SC_ACTION[restartPeriods.Length + 1]; for (int i = 0; i < restartPeriods.Length; ++i) { Debug.Assert(restartPeriods[i].TotalMilliseconds <= uint.MaxValue); Debug.Assert(restartPeriods[i].TotalMilliseconds >= 0); actions[i].Type = NativeMethods.SC_ACTION_RESTART; actions[i].Delay = (uint) restartPeriods[i].TotalMilliseconds; } actions[restartPeriods.Length].Type = NativeMethods.SC_ACTION_NONE; failureActions.cActions = (uint) actions.Length; } fixed (SC_ACTION *actionsPtr = actions) { failureActions.lpsaActions = actionsPtr; #pragma warning suppress 56523 // [....]; Win32Exception default constructor calls Marshal.GetLastWin32Error() internally. if (!NativeMethods.ChangeFailureActions(this, NativeMethods.SERVICE_CONFIG_FAILURE_ACTIONS, ref failureActions)) { throw new Win32Exception(); } } } internal void SetSecurityDescriptor(string descriptor) { RawSecurityDescriptor rawDescriptor = new RawSecurityDescriptor(descriptor); Debug.Assert(rawDescriptor.Group == null); Debug.Assert(rawDescriptor.Owner == null); Debug.Assert(rawDescriptor.DiscretionaryAcl != null); Debug.Assert(rawDescriptor.SystemAcl != null); byte[] binaryDescriptor = new byte[rawDescriptor.BinaryLength]; rawDescriptor.GetBinaryForm(binaryDescriptor, 0); #pragma warning suppress 56523 // [....]; Win32Exception default constructor calls Marshal.GetLastWin32Error() internally. if (!NativeMethods.SetServiceObjectSecurity(this, NativeMethods.DACL_SECURITY_INFORMATION | NativeMethods.SACL_SECURITY_INFORMATION, binaryDescriptor)) { throw new Win32Exception(); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- UnorderedHashRepartitionStream.cs
- EastAsianLunisolarCalendar.cs
- ToolStripItemClickedEventArgs.cs
- WizardStepBase.cs
- FactoryId.cs
- SubpageParagraph.cs
- Panel.cs
- GridViewUpdateEventArgs.cs
- ProgressChangedEventArgs.cs
- Int32.cs
- BlockCollection.cs
- PropertyGridEditorPart.cs
- SqlDelegatedTransaction.cs
- MultiSelectRootGridEntry.cs
- WhitespaceRule.cs
- DownloadProgressEventArgs.cs
- SqlDataSourceCommandEventArgs.cs
- ADMembershipProvider.cs
- EventArgs.cs
- OleDbSchemaGuid.cs
- RegexCompilationInfo.cs
- SystemIcons.cs
- PageBreakRecord.cs
- PropertyManager.cs
- InternalConfigEventArgs.cs
- EasingKeyFrames.cs
- TextChangedEventArgs.cs
- TextParagraphProperties.cs
- SmtpSection.cs
- AlignmentYValidation.cs
- ScheduleChanges.cs
- ResourceProviderFactory.cs
- AdapterSwitches.cs
- BrushMappingModeValidation.cs
- RichTextBoxContextMenu.cs
- ButtonColumn.cs
- BitmapSource.cs
- AnnotationObservableCollection.cs
- SecurityNegotiationException.cs
- GridViewRowCollection.cs
- NativeMethods.cs
- RtfControls.cs
- ToolStripSplitButton.cs
- ClockController.cs
- View.cs
- XmlCustomFormatter.cs
- WebBrowser.cs
- COM2PictureConverter.cs
- DataTransferEventArgs.cs
- PropertyItemInternal.cs
- ReferencedCategoriesDocument.cs
- SystemFonts.cs
- UdpDiscoveryEndpointElement.cs
- CapabilitiesUse.cs
- ClassicBorderDecorator.cs
- FixedFindEngine.cs
- WsrmTraceRecord.cs
- FontSizeConverter.cs
- cookiecollection.cs
- RetrieveVirtualItemEventArgs.cs
- ValueUtilsSmi.cs
- HashAlgorithm.cs
- ListViewAutomationPeer.cs
- Version.cs
- FileAccessException.cs
- TypeUtil.cs
- JsonByteArrayDataContract.cs
- WindowsToolbarAsMenu.cs
- MsmqOutputChannel.cs
- DocumentPageHost.cs
- PointHitTestResult.cs
- CollectionViewGroupRoot.cs
- _SingleItemRequestCache.cs
- LocatorPart.cs
- ReadOnlyHierarchicalDataSourceView.cs
- DataTemplateKey.cs
- GestureRecognitionResult.cs
- RectConverter.cs
- PreloadedPackages.cs
- ColumnProvider.cs
- WebPartUtil.cs
- FrugalList.cs
- ItemContainerProviderWrapper.cs
- storepermission.cs
- NullableBoolConverter.cs
- TextTreeTextBlock.cs
- ImageCodecInfo.cs
- DesignerFrame.cs
- ProtocolImporter.cs
- WorkflowMessageEventHandler.cs
- HttpHandlerAction.cs
- CodeGotoStatement.cs
- SignedXml.cs
- SettingsPropertyCollection.cs
- SerializationSectionGroup.cs
- DataGrid.cs
- ProtocolsConfiguration.cs
- WSFederationHttpSecurityMode.cs
- CompositeFontParser.cs
- BidOverLoads.cs