Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Services / Messaging / System / Messaging / Interop / Restrictions.cs / 1305376 / Restrictions.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Messaging.Interop { using System.Runtime.InteropServices; using System.Diagnostics; using System; using System.ComponentModel; using Microsoft.Win32; internal class Restrictions { private MQRESTRICTION restrictionStructure; public const int PRLT = 0; public const int PRLE = 1; public const int PRGT = 2; public const int PRGE = 3; public const int PREQ = 4; public const int PRNE = 5; public Restrictions(int maxRestrictions) { this.restrictionStructure = new MQRESTRICTION(maxRestrictions); } public virtual void AddGuid(int propertyId, int op, Guid value) { IntPtr data = Marshal.AllocHGlobal(16); Marshal.Copy(value.ToByteArray(), 0 , data, 16); this.AddItem(propertyId, op, MessagePropertyVariants.VT_CLSID, data); } public virtual void AddGuid(int propertyId, int op) { IntPtr data = Marshal.AllocHGlobal(16); this.AddItem(propertyId, op, MessagePropertyVariants.VT_CLSID, data); } private void AddItem(int id,int op, short vt, IntPtr data) { Marshal.WriteInt32(restrictionStructure.GetNextValidPtr(0) , op); Marshal.WriteInt32(restrictionStructure.GetNextValidPtr(4), id); Marshal.WriteInt16(restrictionStructure.GetNextValidPtr(8), vt); Marshal.WriteInt16(restrictionStructure.GetNextValidPtr(10), (short)0); Marshal.WriteInt16(restrictionStructure.GetNextValidPtr(12), (short)0); Marshal.WriteInt16(restrictionStructure.GetNextValidPtr(14), (short)0); Marshal.WriteIntPtr(restrictionStructure.GetNextValidPtr(16), data); Marshal.WriteIntPtr(restrictionStructure.GetNextValidPtr(16 + IntPtr.Size), (IntPtr)0); ++restrictionStructure.restrictionCount; } public virtual void AddI4(int propertyId, int op, int value) { this.AddItem(propertyId, op, MessagePropertyVariants.VT_I4, (IntPtr)value); } public virtual void AddString(int propertyId, int op, string value) { if (value == null) this.AddItem(propertyId, op, MessagePropertyVariants.VT_NULL, (IntPtr)0); else { IntPtr data = Marshal.StringToHGlobalUni(value); this.AddItem(propertyId, op, MessagePropertyVariants.VT_LPWSTR, data); } } public virtual MQRESTRICTION GetRestrictionsRef() { return this.restrictionStructure; } [StructLayout(LayoutKind.Sequential)] public class MQRESTRICTION { public int restrictionCount; [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")] public IntPtr restrinctions; public MQRESTRICTION(int maxCount) { this.restrinctions = Marshal.AllocHGlobal(maxCount * GetRestrictionSize()); } ~MQRESTRICTION() { if (this.restrinctions != (IntPtr)0) { for (int index= 0; index < this.restrictionCount; ++ index) { short vt = Marshal.ReadInt16((IntPtr)((long)this.restrinctions + (index * GetRestrictionSize()) + 8)); if (vt != MessagePropertyVariants.VT_I4) { IntPtr dataPtr = (IntPtr)((long)this.restrinctions + (index * GetRestrictionSize()) + 16); IntPtr data = Marshal.ReadIntPtr(dataPtr); Marshal.FreeHGlobal(data); } } Marshal.FreeHGlobal(this.restrinctions); this.restrinctions = (IntPtr)0; } } public IntPtr GetNextValidPtr(int offset) { return (IntPtr)((long)restrinctions + restrictionCount * GetRestrictionSize() + offset); } public static int GetRestrictionSize() { return 16 + (IntPtr.Size * 2); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Messaging.Interop { using System.Runtime.InteropServices; using System.Diagnostics; using System; using System.ComponentModel; using Microsoft.Win32; internal class Restrictions { private MQRESTRICTION restrictionStructure; public const int PRLT = 0; public const int PRLE = 1; public const int PRGT = 2; public const int PRGE = 3; public const int PREQ = 4; public const int PRNE = 5; public Restrictions(int maxRestrictions) { this.restrictionStructure = new MQRESTRICTION(maxRestrictions); } public virtual void AddGuid(int propertyId, int op, Guid value) { IntPtr data = Marshal.AllocHGlobal(16); Marshal.Copy(value.ToByteArray(), 0 , data, 16); this.AddItem(propertyId, op, MessagePropertyVariants.VT_CLSID, data); } public virtual void AddGuid(int propertyId, int op) { IntPtr data = Marshal.AllocHGlobal(16); this.AddItem(propertyId, op, MessagePropertyVariants.VT_CLSID, data); } private void AddItem(int id,int op, short vt, IntPtr data) { Marshal.WriteInt32(restrictionStructure.GetNextValidPtr(0) , op); Marshal.WriteInt32(restrictionStructure.GetNextValidPtr(4), id); Marshal.WriteInt16(restrictionStructure.GetNextValidPtr(8), vt); Marshal.WriteInt16(restrictionStructure.GetNextValidPtr(10), (short)0); Marshal.WriteInt16(restrictionStructure.GetNextValidPtr(12), (short)0); Marshal.WriteInt16(restrictionStructure.GetNextValidPtr(14), (short)0); Marshal.WriteIntPtr(restrictionStructure.GetNextValidPtr(16), data); Marshal.WriteIntPtr(restrictionStructure.GetNextValidPtr(16 + IntPtr.Size), (IntPtr)0); ++restrictionStructure.restrictionCount; } public virtual void AddI4(int propertyId, int op, int value) { this.AddItem(propertyId, op, MessagePropertyVariants.VT_I4, (IntPtr)value); } public virtual void AddString(int propertyId, int op, string value) { if (value == null) this.AddItem(propertyId, op, MessagePropertyVariants.VT_NULL, (IntPtr)0); else { IntPtr data = Marshal.StringToHGlobalUni(value); this.AddItem(propertyId, op, MessagePropertyVariants.VT_LPWSTR, data); } } public virtual MQRESTRICTION GetRestrictionsRef() { return this.restrictionStructure; } [StructLayout(LayoutKind.Sequential)] public class MQRESTRICTION { public int restrictionCount; [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Reliability", "CA2006:UseSafeHandleToEncapsulateNativeResources")] public IntPtr restrinctions; public MQRESTRICTION(int maxCount) { this.restrinctions = Marshal.AllocHGlobal(maxCount * GetRestrictionSize()); } ~MQRESTRICTION() { if (this.restrinctions != (IntPtr)0) { for (int index= 0; index < this.restrictionCount; ++ index) { short vt = Marshal.ReadInt16((IntPtr)((long)this.restrinctions + (index * GetRestrictionSize()) + 8)); if (vt != MessagePropertyVariants.VT_I4) { IntPtr dataPtr = (IntPtr)((long)this.restrinctions + (index * GetRestrictionSize()) + 16); IntPtr data = Marshal.ReadIntPtr(dataPtr); Marshal.FreeHGlobal(data); } } Marshal.FreeHGlobal(this.restrinctions); this.restrinctions = (IntPtr)0; } } public IntPtr GetNextValidPtr(int offset) { return (IntPtr)((long)restrinctions + restrictionCount * GetRestrictionSize() + offset); } public static int GetRestrictionSize() { return 16 + (IntPtr.Size * 2); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ActiveDocumentEvent.cs
- PropertyInformationCollection.cs
- ContainerParagraph.cs
- DrawingCollection.cs
- IntersectQueryOperator.cs
- ConditionBrowserDialog.cs
- AutomationTextAttribute.cs
- SchemaImporterExtensionsSection.cs
- TextParaLineResult.cs
- ImageMap.cs
- StackSpiller.Temps.cs
- HttpEncoder.cs
- RTLAwareMessageBox.cs
- BinHexEncoder.cs
- ReadOnlyHierarchicalDataSourceView.cs
- WebServiceErrorEvent.cs
- _HeaderInfo.cs
- PathFigure.cs
- ResourceSet.cs
- UpdatableWrapper.cs
- ContentFilePart.cs
- xdrvalidator.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- ScriptResourceInfo.cs
- X509ClientCertificateAuthenticationElement.cs
- SimpleHandlerFactory.cs
- Timer.cs
- TransactionChannel.cs
- NodeLabelEditEvent.cs
- PersonalizationState.cs
- cache.cs
- ConfigurationLocationCollection.cs
- PipelineComponent.cs
- PageCatalogPart.cs
- ExpressionEditor.cs
- CapabilitiesPattern.cs
- HttpDictionary.cs
- StrokeSerializer.cs
- AlternateView.cs
- _NativeSSPI.cs
- AppLevelCompilationSectionCache.cs
- RegionData.cs
- ValueType.cs
- WmlSelectionListAdapter.cs
- ReflectionUtil.cs
- DesignerLoader.cs
- Avt.cs
- BoundingRectTracker.cs
- HtmlValidatorAdapter.cs
- ActionMessageFilterTable.cs
- ScaleTransform3D.cs
- StringUtil.cs
- ConfigViewGenerator.cs
- MenuAdapter.cs
- CollectionViewSource.cs
- SelectionProviderWrapper.cs
- AutoCompleteStringCollection.cs
- MessageContractMemberAttribute.cs
- BaseDataList.cs
- wgx_exports.cs
- DrawingContextDrawingContextWalker.cs
- UndoManager.cs
- ThreadAttributes.cs
- ProbeMatchesApril2005.cs
- TableLayoutSettingsTypeConverter.cs
- HashHelper.cs
- Graph.cs
- BuildDependencySet.cs
- XmlSchemaGroupRef.cs
- PropertySourceInfo.cs
- Double.cs
- CodeSnippetExpression.cs
- IDictionary.cs
- DataReceivedEventArgs.cs
- ClassHandlersStore.cs
- EndEvent.cs
- PointCollection.cs
- TimelineGroup.cs
- RequestSecurityTokenForGetBrowserToken.cs
- CodeMemberField.cs
- XamlGridLengthSerializer.cs
- ProxyFragment.cs
- WindowsFormsSectionHandler.cs
- MappedMetaModel.cs
- MarginCollapsingState.cs
- SchemaComplexType.cs
- CompilerResults.cs
- ConsoleTraceListener.cs
- MediaTimeline.cs
- GenericPrincipal.cs
- PublisherIdentityPermission.cs
- XmlWrappingReader.cs
- OutputCacheModule.cs
- Line.cs
- SqlProvider.cs
- RawKeyboardInputReport.cs
- SettingsPropertyIsReadOnlyException.cs
- XmlProcessingInstruction.cs
- CheckableControlBaseAdapter.cs
- CompositeClientFormatter.cs