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
- SynchronizationContext.cs
- DrawingVisualDrawingContext.cs
- PrintDialog.cs
- InternalsVisibleToAttribute.cs
- PositiveTimeSpanValidator.cs
- Italic.cs
- ZipIOModeEnforcingStream.cs
- ClientApiGenerator.cs
- CodeAttributeArgumentCollection.cs
- CreateInstanceBinder.cs
- PipelineModuleStepContainer.cs
- DrawingBrush.cs
- ViewBase.cs
- XmlSerializableReader.cs
- SubstitutionResponseElement.cs
- BufferedGraphicsContext.cs
- ConfigurationSettings.cs
- TextServicesCompartmentEventSink.cs
- CryptoKeySecurity.cs
- SmiContext.cs
- Run.cs
- Inline.cs
- ResizeGrip.cs
- DataGridPagerStyle.cs
- InvariantComparer.cs
- CheckBoxPopupAdapter.cs
- InvokeMethodActivity.cs
- TriggerCollection.cs
- TableItemPattern.cs
- PeerApplicationLaunchInfo.cs
- WizardStepBase.cs
- TextParagraphView.cs
- Bidi.cs
- GACIdentityPermission.cs
- PageHandlerFactory.cs
- ListViewItemSelectionChangedEvent.cs
- ScriptingProfileServiceSection.cs
- ButtonStandardAdapter.cs
- MD5.cs
- Publisher.cs
- ColorMap.cs
- DataViewManager.cs
- ArithmeticException.cs
- XPathParser.cs
- MemberPath.cs
- Transform3DCollection.cs
- EncryptedPackage.cs
- ContentElement.cs
- DataGridTableStyleMappingNameEditor.cs
- TypeContext.cs
- Pkcs9Attribute.cs
- UseLicense.cs
- ProviderConnectionPointCollection.cs
- MessageBox.cs
- ReflectEventDescriptor.cs
- VerificationException.cs
- TemplateParser.cs
- KeyManager.cs
- LineServicesRun.cs
- InvokeHandlers.cs
- DelayedRegex.cs
- TrackingProfileSerializer.cs
- HandlerFactoryCache.cs
- LayoutExceptionEventArgs.cs
- State.cs
- Journaling.cs
- SimpleType.cs
- ToolStripOverflow.cs
- XPathAxisIterator.cs
- AvTraceDetails.cs
- ButtonChrome.cs
- ResourceReader.cs
- TimerTable.cs
- SubpageParaClient.cs
- LinkButton.cs
- PopupEventArgs.cs
- DriveInfo.cs
- SchemaConstraints.cs
- SystemPens.cs
- OdbcParameter.cs
- OuterGlowBitmapEffect.cs
- RemotingAttributes.cs
- ProxyGenerationError.cs
- InfoCardSymmetricCrypto.cs
- QilPatternFactory.cs
- DataFormats.cs
- ByteStreamBufferedMessageData.cs
- ResumeStoryboard.cs
- SiteMapNode.cs
- ActivityCodeGenerator.cs
- Formatter.cs
- DataGridLength.cs
- OleDbPermission.cs
- CollectionBase.cs
- PathGradientBrush.cs
- PageTheme.cs
- CodeDirectiveCollection.cs
- HttpStreamXmlDictionaryWriter.cs
- DataSysAttribute.cs
- HostExecutionContextManager.cs