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
- DiscoveryExceptionDictionary.cs
- XmlSchemaComplexContentExtension.cs
- ProfileInfo.cs
- XpsViewerException.cs
- EdmPropertyAttribute.cs
- SQLDateTimeStorage.cs
- ConfigurationSchemaErrors.cs
- XslTransform.cs
- XmlWrappingWriter.cs
- Int16AnimationUsingKeyFrames.cs
- DynamicILGenerator.cs
- DescendantOverDescendantQuery.cs
- Models.cs
- ListViewTableRow.cs
- ContainsSearchOperator.cs
- CustomSignedXml.cs
- RunClient.cs
- GenericTypeParameterBuilder.cs
- SelectQueryOperator.cs
- TypefaceCollection.cs
- Menu.cs
- DataSourceSelectArguments.cs
- WebAdminConfigurationHelper.cs
- ServiceBusyException.cs
- LinqDataSourceValidationException.cs
- HttpRuntime.cs
- RedBlackList.cs
- SchemeSettingElement.cs
- ScriptingSectionGroup.cs
- Frame.cs
- SqlParameter.cs
- XmlNamespaceMappingCollection.cs
- DataTableNewRowEvent.cs
- DeclarativeCatalogPart.cs
- ReachSerializer.cs
- XmlFormatWriterGenerator.cs
- SchemaNamespaceManager.cs
- GroupStyle.cs
- DeviceContexts.cs
- AssemblyAttributes.cs
- _FtpControlStream.cs
- RTLAwareMessageBox.cs
- ClientUrlResolverWrapper.cs
- TripleDES.cs
- SHA512Cng.cs
- XmlWrappingReader.cs
- ActivityWithResultWrapper.cs
- ListItemCollection.cs
- XmlSignatureProperties.cs
- QilPatternVisitor.cs
- MimeWriter.cs
- PathSegment.cs
- RestHandlerFactory.cs
- GeometryHitTestParameters.cs
- DiagnosticsConfiguration.cs
- processwaithandle.cs
- PagesChangedEventArgs.cs
- NonBatchDirectoryCompiler.cs
- PerformanceCounterPermissionEntry.cs
- ToolboxBitmapAttribute.cs
- TimeZone.cs
- VirtualPathUtility.cs
- TypeBuilder.cs
- PrimitiveXmlSerializers.cs
- KeyValuePair.cs
- ValidationRule.cs
- ItemList.cs
- RtfControls.cs
- SqlTypeSystemProvider.cs
- BitVector32.cs
- EditingCoordinator.cs
- IisTraceWebEventProvider.cs
- BooleanAnimationBase.cs
- CdpEqualityComparer.cs
- Debugger.cs
- TransactionScope.cs
- StorageComplexTypeMapping.cs
- DataFieldEditor.cs
- TraceHandlerErrorFormatter.cs
- SqlBulkCopy.cs
- FormatConvertedBitmap.cs
- Memoizer.cs
- ServiceProviders.cs
- RemotingClientProxy.cs
- TriggerBase.cs
- VideoDrawing.cs
- PropertyDescriptors.cs
- Misc.cs
- WebBrowsableAttribute.cs
- SingleAnimation.cs
- Registry.cs
- GeometryGroup.cs
- Splitter.cs
- CheckBoxList.cs
- ThemeableAttribute.cs
- ValidatorCompatibilityHelper.cs
- XmlSchemaObjectCollection.cs
- OpCopier.cs
- SetUserPreferenceRequest.cs
- ToolboxItemAttribute.cs