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
- GroupByQueryOperator.cs
- XmlWriter.cs
- CollectionsUtil.cs
- EdmMember.cs
- RawStylusActions.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- XmlNamespaceMappingCollection.cs
- TypeConverterHelper.cs
- CatalogZoneBase.cs
- NamespaceExpr.cs
- DispatcherEventArgs.cs
- Menu.cs
- AnimatedTypeHelpers.cs
- Constraint.cs
- DependencyPropertyChangedEventArgs.cs
- PropertyValueChangedEvent.cs
- OutputCacheModule.cs
- WebBodyFormatMessageProperty.cs
- WmpBitmapEncoder.cs
- ZipIOExtraFieldZip64Element.cs
- RadialGradientBrush.cs
- KeyEvent.cs
- UriSection.cs
- MediaTimeline.cs
- CommandEventArgs.cs
- BufferedGraphicsManager.cs
- BufferedGraphicsManager.cs
- FilteredXmlReader.cs
- OutputCacheSection.cs
- BypassElement.cs
- AmbientLight.cs
- DataObjectCopyingEventArgs.cs
- RulePatternOps.cs
- IndentedWriter.cs
- ExtensionFile.cs
- DESCryptoServiceProvider.cs
- Transaction.cs
- EndpointDispatcher.cs
- Win32MouseDevice.cs
- CachingHintValidation.cs
- CharEnumerator.cs
- Crypto.cs
- SizeAnimation.cs
- AttributeCollection.cs
- XmlReflectionImporter.cs
- XmlResolver.cs
- ContractCodeDomInfo.cs
- TextDocumentView.cs
- PersonalizationProvider.cs
- DataGridViewColumn.cs
- ImageClickEventArgs.cs
- PeerApplication.cs
- HwndSubclass.cs
- ControlType.cs
- ReadOnlyCollection.cs
- HostingEnvironmentException.cs
- DateBoldEvent.cs
- odbcmetadatacollectionnames.cs
- GenericRootAutomationPeer.cs
- DataBinding.cs
- WorkflowInstanceQuery.cs
- InteropBitmapSource.cs
- PrintDocument.cs
- DictionaryContent.cs
- ExecutionContext.cs
- DragStartedEventArgs.cs
- _LazyAsyncResult.cs
- XmlSequenceWriter.cs
- EventLevel.cs
- ResourceReferenceKeyNotFoundException.cs
- UnsafeNativeMethodsMilCoreApi.cs
- ConfigXmlAttribute.cs
- SqlConnectionHelper.cs
- AsyncWaitHandle.cs
- WebWorkflowRole.cs
- RadioButtonStandardAdapter.cs
- InputDevice.cs
- TableLayoutSettingsTypeConverter.cs
- ZipIOLocalFileDataDescriptor.cs
- ResourceDescriptionAttribute.cs
- StringWriter.cs
- DataBoundControl.cs
- TransformerInfo.cs
- BindingOperations.cs
- PolyQuadraticBezierSegment.cs
- TypeForwardedFromAttribute.cs
- EnumUnknown.cs
- HeaderCollection.cs
- RegexGroup.cs
- StaticTextPointer.cs
- AnchorEditor.cs
- DateTimeValueSerializerContext.cs
- BindingGroup.cs
- RequiredFieldValidator.cs
- Constants.cs
- isolationinterop.cs
- AsymmetricAlgorithm.cs
- SmiRecordBuffer.cs
- mansign.cs
- OracleFactory.cs