Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Services / Messaging / System / Messaging / Interop / UnsafeNativeMethods.cs / 1305376 / UnsafeNativeMethods.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Messaging.Interop { using System.Text; using System.Threading; using System.Runtime.InteropServices; using System.Diagnostics; using System; using System.ComponentModel; using Microsoft.Win32; using System.Security; using System.Security.Permissions; [ System.Runtime.InteropServices.ComVisible(false), System.Security.SuppressUnmanagedCodeSecurityAttribute() ] internal static class UnsafeNativeMethods { [DllImport(ExternDll.Mqrt, EntryPoint="MQOpenQueue", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] private static extern int IntMQOpenQueue(string formatName, int access, int shareMode, out MessageQueueHandle handle); public static int MQOpenQueue(string formatName, int access, int shareMode, out MessageQueueHandle handle) { try { return IntMQOpenQueue(formatName, access, shareMode, out handle); } catch (DllNotFoundException) { throw new InvalidOperationException(Res.GetString(Res.MSMQNotInstalled)); } } [DllImport(ExternDll.Mqrt, CharSet=System.Runtime.InteropServices.CharSet.Unicode)] public static extern int MQSendMessage(MessageQueueHandle handle, MessagePropertyVariants.MQPROPS properties, IntPtr transaction); [DllImport(ExternDll.Mqrt, CharSet=System.Runtime.InteropServices.CharSet.Unicode)] public static extern int MQSendMessage(MessageQueueHandle handle, MessagePropertyVariants.MQPROPS properties, ITransaction transaction); [DllImport(ExternDll.Mqrt, CharSet=System.Runtime.InteropServices.CharSet.Unicode)] public unsafe static extern int MQReceiveMessage(MessageQueueHandle handle, uint timeout, int action, MessagePropertyVariants.MQPROPS properties, NativeOverlapped * overlapped, SafeNativeMethods.ReceiveCallback receiveCallback, CursorHandle cursorHandle, IntPtr transaction); [DllImport(ExternDll.Mqrt, CharSet=System.Runtime.InteropServices.CharSet.Unicode)] public unsafe static extern int MQReceiveMessage(MessageQueueHandle handle, uint timeout, int action, MessagePropertyVariants.MQPROPS properties, NativeOverlapped * overlapped, SafeNativeMethods.ReceiveCallback receiveCallback, CursorHandle cursorHandle, ITransaction transaction); [DllImport(ExternDll.Mqrt, EntryPoint="MQReceiveMessageByLookupId", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] private unsafe static extern int IntMQReceiveMessageByLookupId(MessageQueueHandle handle, long lookupId, int action, MessagePropertyVariants.MQPROPS properties, NativeOverlapped * overlapped, SafeNativeMethods.ReceiveCallback receiveCallback, IntPtr transaction); public unsafe static int MQReceiveMessageByLookupId(MessageQueueHandle handle, long lookupId, int action, MessagePropertyVariants.MQPROPS properties, NativeOverlapped * overlapped, SafeNativeMethods.ReceiveCallback receiveCallback, IntPtr transaction) { try { return IntMQReceiveMessageByLookupId(handle, lookupId, action, properties, overlapped, receiveCallback, transaction); } catch (EntryPointNotFoundException) { throw new PlatformNotSupportedException(Res.GetString(Res.PlatformNotSupported)); } } [DllImport(ExternDll.Mqrt, EntryPoint="MQReceiveMessageByLookupId", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] private unsafe static extern int IntMQReceiveMessageByLookupId(MessageQueueHandle handle, long lookupId, int action, MessagePropertyVariants.MQPROPS properties, NativeOverlapped * overlapped, SafeNativeMethods.ReceiveCallback receiveCallback, ITransaction transaction); public unsafe static int MQReceiveMessageByLookupId(MessageQueueHandle handle, long lookupId, int action, MessagePropertyVariants.MQPROPS properties, NativeOverlapped * overlapped, SafeNativeMethods.ReceiveCallback receiveCallback, ITransaction transaction) { try { return IntMQReceiveMessageByLookupId(handle, lookupId, action, properties, overlapped, receiveCallback, transaction); } catch (EntryPointNotFoundException) { throw new PlatformNotSupportedException(Res.GetString(Res.PlatformNotSupported)); } } [DllImport(ExternDll.Mqrt, EntryPoint="MQCreateQueue", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] private static extern int IntMQCreateQueue(IntPtr securityDescriptor, MessagePropertyVariants.MQPROPS queueProperties, StringBuilder formatName, ref int formatNameLength); public static int MQCreateQueue(IntPtr securityDescriptor, MessagePropertyVariants.MQPROPS queueProperties, StringBuilder formatName, ref int formatNameLength) { try { return IntMQCreateQueue(securityDescriptor, queueProperties, formatName, ref formatNameLength); } catch (DllNotFoundException) { throw new InvalidOperationException(Res.GetString(Res.MSMQNotInstalled)); } } [DllImport(ExternDll.Mqrt, EntryPoint="MQDeleteQueue", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] private static extern int IntMQDeleteQueue(string formatName); public static int MQDeleteQueue(string formatName) { try { return IntMQDeleteQueue(formatName); } catch (DllNotFoundException) { throw new InvalidOperationException(Res.GetString(Res.MSMQNotInstalled)); } } [DllImport(ExternDll.Mqrt, EntryPoint="MQLocateBegin", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] private static extern int IntMQLocateBegin(string context, Restrictions.MQRESTRICTION Restriction, Columns.MQCOLUMNSET columnSet, IntPtr sortSet, out LocatorHandle enumHandle); public static int MQLocateBegin(string context, Restrictions.MQRESTRICTION Restriction, Columns.MQCOLUMNSET columnSet, out LocatorHandle enumHandle) { try { return IntMQLocateBegin(context, Restriction, columnSet, IntPtr.Zero, out enumHandle); } catch (DllNotFoundException) { throw new InvalidOperationException(Res.GetString(Res.MSMQNotInstalled)); } } [DllImport(ExternDll.Mqrt, EntryPoint="MQGetMachineProperties", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] private static extern int IntMQGetMachineProperties(string machineName, IntPtr machineIdPointer, MessagePropertyVariants.MQPROPS machineProperties); public static int MQGetMachineProperties(string machineName, IntPtr machineIdPointer, MessagePropertyVariants.MQPROPS machineProperties) { try { return IntMQGetMachineProperties(machineName, machineIdPointer, machineProperties); } catch (DllNotFoundException) { throw new InvalidOperationException(Res.GetString(Res.MSMQNotInstalled)); } } [DllImport(ExternDll.Mqrt, EntryPoint="MQGetQueueProperties", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] private static extern int IntMQGetQueueProperties(string formatName, MessagePropertyVariants.MQPROPS queueProperties); public static int MQGetQueueProperties(string formatName, MessagePropertyVariants.MQPROPS queueProperties) { try { return IntMQGetQueueProperties(formatName, queueProperties); } catch (DllNotFoundException) { throw new InvalidOperationException(Res.GetString(Res.MSMQNotInstalled)); } } [DllImport(ExternDll.Mqrt, EntryPoint="MQMgmtGetInfo", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] private static extern int IntMQMgmtGetInfo(string machineName, string objectName, MessagePropertyVariants.MQPROPS queueProperties); public static int MQMgmtGetInfo(string machineName, string objectName, MessagePropertyVariants.MQPROPS queueProperties) { try { return IntMQMgmtGetInfo(machineName, objectName, queueProperties); } catch (EntryPointNotFoundException) { throw new InvalidOperationException(Res.GetString(Res.MSMQInfoNotSupported)); } catch (DllNotFoundException) { throw new InvalidOperationException(Res.GetString(Res.MSMQNotInstalled)); } } [DllImport(ExternDll.Mqrt, CharSet=System.Runtime.InteropServices.CharSet.Unicode)] public static extern int MQPurgeQueue(MessageQueueHandle handle); [DllImport(ExternDll.Mqrt, EntryPoint="MQSetQueueProperties", CharSet=System.Runtime.InteropServices.CharSet.Unicode)] private static extern int IntMQSetQueueProperties(string formatName, MessagePropertyVariants.MQPROPS queueProperties); public static int MQSetQueueProperties(string formatName, MessagePropertyVariants.MQPROPS queueProperties) { try { return IntMQSetQueueProperties(formatName, queueProperties); } catch (DllNotFoundException) { throw new InvalidOperationException(Res.GetString(Res.MSMQNotInstalled)); } } // This method gets us the current security descriptor In "self-relative" format - so it contains offsets instead of pointers, // and we don't know how big the return buffer is, so we just use an IntPtr parameter [DllImport(ExternDll.Mqrt, CharSet=System.Runtime.InteropServices.CharSet.Unicode, SetLastError=true)] public static extern int MQGetQueueSecurity(string formatName, int SecurityInformation, IntPtr SecurityDescriptor, int length, out int lengthNeeded); // This method takes a security descriptor In "absolute" formate - so it will always be the same size and // we can just use the SECURITY_DESCRIPTOR class. [DllImport(ExternDll.Mqrt, CharSet=System.Runtime.InteropServices.CharSet.Unicode, SetLastError=true)] public static extern int MQSetQueueSecurity(string formatName, int SecurityInformation, NativeMethods.SECURITY_DESCRIPTOR SecurityDescriptor); [DllImport(ExternDll.Advapi32, SetLastError=true)] public static extern bool GetSecurityDescriptorDacl(IntPtr pSD, out bool daclPresent, out IntPtr pDacl, out bool daclDefaulted); [DllImport(ExternDll.Advapi32, SetLastError=true)] public static extern bool SetSecurityDescriptorDacl(NativeMethods.SECURITY_DESCRIPTOR pSD, bool daclPresent, IntPtr pDacl, bool daclDefaulted); [DllImport(ExternDll.Advapi32, SetLastError=true)] public static extern bool InitializeSecurityDescriptor(NativeMethods.SECURITY_DESCRIPTOR SD, int revision); [DllImport(ExternDll.Advapi32, CharSet=System.Runtime.InteropServices.CharSet.Auto, SetLastError=true)] public static extern bool LookupAccountName(string lpSystemName, string lpAccountName, IntPtr sid, ref int sidSize, StringBuilder DomainName, ref int DomainSize, out int pUse); } } // 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
- ADConnectionHelper.cs
- TypeConverter.cs
- SmiContextFactory.cs
- ResourceDictionary.cs
- ExpressionBuilderContext.cs
- BinaryObjectReader.cs
- KnownIds.cs
- CollectionType.cs
- BuildProviderUtils.cs
- UIElement3D.cs
- XmlSchemaImporter.cs
- PngBitmapEncoder.cs
- XNameConverter.cs
- RawAppCommandInputReport.cs
- ConstraintConverter.cs
- PageAsyncTask.cs
- SubMenuStyleCollection.cs
- AuthenticateEventArgs.cs
- PanelDesigner.cs
- SemanticValue.cs
- NonParentingControl.cs
- AssociationEndMember.cs
- Viewport3DAutomationPeer.cs
- ErrorHandlerFaultInfo.cs
- sortedlist.cs
- PriorityQueue.cs
- ClientData.cs
- StylusPointPropertyId.cs
- ReadOnlyDictionary.cs
- FileLevelControlBuilderAttribute.cs
- NotImplementedException.cs
- SmiRequestExecutor.cs
- PocoPropertyAccessorStrategy.cs
- TabletCollection.cs
- TCPListener.cs
- ProfileSection.cs
- RuntimeWrappedException.cs
- SchemaEntity.cs
- WebPartConnectionCollection.cs
- CompositeFontInfo.cs
- XmlValidatingReader.cs
- ListViewItem.cs
- CompositeControl.cs
- Ipv6Element.cs
- SpellerStatusTable.cs
- IgnorePropertiesAttribute.cs
- HostAdapter.cs
- EntityDataSourceColumn.cs
- ImageInfo.cs
- ImageBrush.cs
- XmlDomTextWriter.cs
- MachineKeySection.cs
- Repeater.cs
- VScrollProperties.cs
- UnsafeNetInfoNativeMethods.cs
- GlobalizationSection.cs
- XmlResolver.cs
- IdentityHolder.cs
- DataGridViewBand.cs
- AliasGenerator.cs
- State.cs
- CrossSiteScriptingValidation.cs
- StreamUpgradeAcceptor.cs
- PropertyChangeTracker.cs
- HttpListenerResponse.cs
- DbProviderConfigurationHandler.cs
- XmlSchemaGroup.cs
- ParameterCollection.cs
- PolyLineSegmentFigureLogic.cs
- MimeObjectFactory.cs
- FileSystemEventArgs.cs
- NamedServiceModelExtensionCollectionElement.cs
- DragEventArgs.cs
- EventProviderWriter.cs
- Repeater.cs
- LoginUtil.cs
- Size3D.cs
- DataRecordInternal.cs
- UrlMappingCollection.cs
- Point4D.cs
- ColorPalette.cs
- NativeMethods.cs
- Emitter.cs
- QuaternionAnimationBase.cs
- XmlILIndex.cs
- CapabilitiesAssignment.cs
- PauseStoryboard.cs
- WebPartManagerDesigner.cs
- SrgsSubset.cs
- ActiveXHelper.cs
- ToolTip.cs
- WindowsAuthenticationEventArgs.cs
- ColorContext.cs
- GPRECT.cs
- AsyncResult.cs
- ColorConvertedBitmap.cs
- PointCollectionValueSerializer.cs
- LightweightCodeGenerator.cs
- DeferredElementTreeState.cs
- DataGridViewComboBoxColumnDesigner.cs