Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Wmi / managed / System / Management / wmiutil.cs / 1305376 / wmiutil.cs
using System; using System.Runtime.InteropServices; using System.Runtime.Versioning; using WbemClient_v1; namespace System.Management { [ComImport, Guid("87A5AD68-A38A-43ef-ACA9-EFE910E5D24C"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] internal interface IWmiEventSource { [PreserveSig] void Indicate(IntPtr pIWbemClassObject); [PreserveSig] void SetStatus( int lFlags, int hResult, [MarshalAs(UnmanagedType.BStr)] string strParam , IntPtr pObjParam ); } #if USEIWOS // The following is a manually defined wrapper for IWbemObjectSink // since the size_is attribute cannot be dealt with by TlbImp. [Guid("7c857801-7381-11cf-884d-00aa004b2e24"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IWbemObjectSink { [PreserveSig] void Indicate( long lObjectCount, [MarshalAs(UnmanagedType.Interface, SizeParamIndex=0)] IWbemClassObject [] apObjArray ); [PreserveSig] void SetStatus( long lFlags, int hResult, [MarshalAs(UnmanagedType.BStr)] string strParam, [MarshalAs(UnmanagedType.Interface)] IWbemClassObject pObjParam ); }; #endif //Class for calling GetErrorInfo from managed code class WbemErrorInfo { public static IWbemClassObjectFreeThreaded GetErrorInfo() { IErrorInfo errorInfo = GetErrorInfo(0); if(null != errorInfo) { IntPtr pUnk = Marshal.GetIUnknownForObject(errorInfo); IntPtr pIWbemClassObject; Marshal.QueryInterface(pUnk, ref IWbemClassObjectFreeThreaded.IID_IWbemClassObject, out pIWbemClassObject); Marshal.Release(pUnk); // The IWbemClassObjectFreeThreaded instance will own reference count on pIWbemClassObject if(pIWbemClassObject != IntPtr.Zero) return new IWbemClassObjectFreeThreaded(pIWbemClassObject); } return null; } [ResourceExposure( ResourceScope.None),DllImport("oleaut32.dll", PreserveSig=false)] static extern IErrorInfo GetErrorInfo(int reserved); } //RCW for IErrorInfo [ComImport] [Guid("1CF2B120-547D-101B-8E65-08002B2BD119")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] internal interface IErrorInfo { Guid GetGUID(); [return:MarshalAs(UnmanagedType.BStr)] string GetSource(); [return:MarshalAs(UnmanagedType.BStr)] string GetDescription(); [return:MarshalAs(UnmanagedType.BStr)] string GetHelpFile(); uint GetHelpContext(); } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Runtime.InteropServices; using System.Runtime.Versioning; using WbemClient_v1; namespace System.Management { [ComImport, Guid("87A5AD68-A38A-43ef-ACA9-EFE910E5D24C"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] internal interface IWmiEventSource { [PreserveSig] void Indicate(IntPtr pIWbemClassObject); [PreserveSig] void SetStatus( int lFlags, int hResult, [MarshalAs(UnmanagedType.BStr)] string strParam , IntPtr pObjParam ); } #if USEIWOS // The following is a manually defined wrapper for IWbemObjectSink // since the size_is attribute cannot be dealt with by TlbImp. [Guid("7c857801-7381-11cf-884d-00aa004b2e24"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IWbemObjectSink { [PreserveSig] void Indicate( long lObjectCount, [MarshalAs(UnmanagedType.Interface, SizeParamIndex=0)] IWbemClassObject [] apObjArray ); [PreserveSig] void SetStatus( long lFlags, int hResult, [MarshalAs(UnmanagedType.BStr)] string strParam, [MarshalAs(UnmanagedType.Interface)] IWbemClassObject pObjParam ); }; #endif //Class for calling GetErrorInfo from managed code class WbemErrorInfo { public static IWbemClassObjectFreeThreaded GetErrorInfo() { IErrorInfo errorInfo = GetErrorInfo(0); if(null != errorInfo) { IntPtr pUnk = Marshal.GetIUnknownForObject(errorInfo); IntPtr pIWbemClassObject; Marshal.QueryInterface(pUnk, ref IWbemClassObjectFreeThreaded.IID_IWbemClassObject, out pIWbemClassObject); Marshal.Release(pUnk); // The IWbemClassObjectFreeThreaded instance will own reference count on pIWbemClassObject if(pIWbemClassObject != IntPtr.Zero) return new IWbemClassObjectFreeThreaded(pIWbemClassObject); } return null; } [ResourceExposure( ResourceScope.None),DllImport("oleaut32.dll", PreserveSig=false)] static extern IErrorInfo GetErrorInfo(int reserved); } //RCW for IErrorInfo [ComImport] [Guid("1CF2B120-547D-101B-8E65-08002B2BD119")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] internal interface IErrorInfo { Guid GetGUID(); [return:MarshalAs(UnmanagedType.BStr)] string GetSource(); [return:MarshalAs(UnmanagedType.BStr)] string GetDescription(); [return:MarshalAs(UnmanagedType.BStr)] string GetHelpFile(); uint GetHelpContext(); } } // 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
- TimeSpanParse.cs
- TaskHelper.cs
- mda.cs
- CoreChannel.cs
- XmlWriterSettings.cs
- BatchStream.cs
- DefaultHttpHandler.cs
- WorkflowInstanceExtensionProvider.cs
- IntersectQueryOperator.cs
- FilteredDataSetHelper.cs
- Interlocked.cs
- CodeMemberEvent.cs
- XsltConvert.cs
- WindowsContainer.cs
- _NegoStream.cs
- LoginViewDesigner.cs
- MsdtcWrapper.cs
- DataTableNewRowEvent.cs
- InternalControlCollection.cs
- PopOutPanel.cs
- PopupRootAutomationPeer.cs
- SerializationBinder.cs
- NegationPusher.cs
- KeyToListMap.cs
- DateTime.cs
- xmlformatgeneratorstatics.cs
- AssemblySettingAttributes.cs
- BindingsCollection.cs
- ConditionalDesigner.cs
- CodeSubDirectory.cs
- TextTreeDeleteContentUndoUnit.cs
- SymbolUsageManager.cs
- CheckBoxList.cs
- SoapFault.cs
- SRef.cs
- RunInstallerAttribute.cs
- RegionInfo.cs
- XmlObjectSerializerWriteContextComplex.cs
- FrameworkTemplate.cs
- ChangeNode.cs
- ApplicationSecurityManager.cs
- SqlInfoMessageEvent.cs
- MemberRestriction.cs
- HtmlTableCell.cs
- AnnotationMap.cs
- Int64Converter.cs
- WebPartTracker.cs
- XmlNodeList.cs
- CngKeyCreationParameters.cs
- DocComment.cs
- DPTypeDescriptorContext.cs
- SpellerInterop.cs
- RoutedPropertyChangedEventArgs.cs
- WindowsButton.cs
- SemanticBasicElement.cs
- HyperLinkField.cs
- XmlAttribute.cs
- DateBoldEvent.cs
- ChannelFactoryRefCache.cs
- AsymmetricSignatureDeformatter.cs
- WebPartHelpVerb.cs
- PictureBox.cs
- NativeCompoundFileAPIs.cs
- CompressionTransform.cs
- WebPartTracker.cs
- VisualCollection.cs
- SmiEventStream.cs
- ElapsedEventArgs.cs
- Renderer.cs
- Socket.cs
- PixelShader.cs
- WebOperationContext.cs
- PointValueSerializer.cs
- PseudoWebRequest.cs
- DurableEnlistmentState.cs
- SqlCommandBuilder.cs
- ResXResourceSet.cs
- Classification.cs
- oledbconnectionstring.cs
- SqlAliaser.cs
- IPEndPoint.cs
- MetadataSource.cs
- Error.cs
- InstanceDescriptor.cs
- SQLMembershipProvider.cs
- Application.cs
- ByteAnimation.cs
- TableLayoutPanelCellPosition.cs
- SmiEventSink_Default.cs
- HTTPNotFoundHandler.cs
- DrawingAttributeSerializer.cs
- CommandField.cs
- WasHttpHandlersInstallComponent.cs
- RelationshipDetailsCollection.cs
- FileEnumerator.cs
- DateTimeOffset.cs
- AddInStore.cs
- WebPartEditVerb.cs
- SqlFunctionAttribute.cs
- CSharpCodeProvider.cs