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
- Maps.cs
- D3DImage.cs
- InkCanvasSelection.cs
- SetMemberBinder.cs
- DbConnectionStringCommon.cs
- Condition.cs
- InternalTransaction.cs
- FixedHyperLink.cs
- InlineObject.cs
- FragmentQuery.cs
- TypeInitializationException.cs
- SByteStorage.cs
- FakeModelPropertyImpl.cs
- CompilerCollection.cs
- Trace.cs
- ValidationPropertyAttribute.cs
- MouseGestureValueSerializer.cs
- CompilerErrorCollection.cs
- EntityReference.cs
- Brush.cs
- GeneralEndpointIdentity.cs
- XmlSchemaValidationException.cs
- InitiatorSessionSymmetricTransportSecurityProtocol.cs
- Rect.cs
- MetabaseServerConfig.cs
- DbDeleteCommandTree.cs
- SettingsAttributes.cs
- AccessControlEntry.cs
- DriveNotFoundException.cs
- XmlTextEncoder.cs
- RuntimeEnvironment.cs
- CompilerGeneratedAttribute.cs
- Deserializer.cs
- Mappings.cs
- ClientSession.cs
- NativeMethods.cs
- ApplicationActivator.cs
- FigureHelper.cs
- ConstNode.cs
- OdbcConnection.cs
- TextParagraphCache.cs
- SizeLimitedCache.cs
- AlignmentXValidation.cs
- MultipleCopiesCollection.cs
- PageCatalogPartDesigner.cs
- ExpressionVisitor.cs
- ApplicationFileParser.cs
- FullTextState.cs
- Utils.cs
- CircleHotSpot.cs
- ToolBarTray.cs
- PageCatalogPart.cs
- TableAdapterManagerHelper.cs
- IndentTextWriter.cs
- CodeParameterDeclarationExpression.cs
- CompilationUnit.cs
- OutputCacheEntry.cs
- SmtpMail.cs
- DependencyPropertyAttribute.cs
- WpfPayload.cs
- RTLAwareMessageBox.cs
- MenuAutomationPeer.cs
- ContextQuery.cs
- SortedList.cs
- ImpersonationContext.cs
- SymbolMethod.cs
- WebPartVerbsEventArgs.cs
- CheckBoxStandardAdapter.cs
- MessageBox.cs
- FormViewInsertEventArgs.cs
- HtmlElementCollection.cs
- RawStylusActions.cs
- NullExtension.cs
- IPAddressCollection.cs
- QuaternionConverter.cs
- CompiledQuery.cs
- StylusEventArgs.cs
- CharAnimationBase.cs
- ResourceProviderFactory.cs
- SessionStateModule.cs
- AppSettingsSection.cs
- FontSourceCollection.cs
- SubpageParaClient.cs
- BufferedMessageData.cs
- EmptyCollection.cs
- KeyValuePair.cs
- MenuEventArgs.cs
- NegotiateStream.cs
- CalendarButtonAutomationPeer.cs
- IsolatedStoragePermission.cs
- TemplateModeChangedEventArgs.cs
- MenuAutomationPeer.cs
- _emptywebproxy.cs
- EpmContentSerializerBase.cs
- AlignmentYValidation.cs
- HttpCachePolicyElement.cs
- TemplateXamlParser.cs
- AssemblyBuilder.cs
- EdgeModeValidation.cs
- MessageSecurityException.cs