VarEnum 枚举

指示当数组作为 UnmanagedType.SafeArray 从托管代码封送到非托管代码时,如何封送该数组的元素。

**命名空间:**System.Runtime.InteropServices
**程序集:**mscorlib(在 mscorlib.dll 中)

语法

声明
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Enumeration VarEnum
用法
Dim instance As VarEnum
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public enum VarEnum
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public enum class VarEnum
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public enum VarEnum
SerializableAttribute 
ComVisibleAttribute(true) 
public enum VarEnum

成员

  成员名称 说明
由 .NET Compact Framework 支持 VT_ARRAY 指示 SAFEARRAY 指针。 
由 .NET Compact Framework 支持 VT_BLOB 指示以长度为前缀的字节。 
由 .NET Compact Framework 支持 VT_BLOB_OBJECT 指示 Blob 包含对象。 
由 .NET Compact Framework 支持 VT_BOOL 指示一个布尔值。 
由 .NET Compact Framework 支持 VT_BSTR 指示 BSTR 字符串。 
由 .NET Compact Framework 支持 VT_BYREF 指示值为引用。 
由 .NET Compact Framework 支持 VT_CARRAY 指示 C 样式数组。 
由 .NET Compact Framework 支持 VT_CF 指示剪贴板格式。 
由 .NET Compact Framework 支持 VT_CLSID 指示类 ID。 
由 .NET Compact Framework 支持 VT_CY 指示货币值。 
由 .NET Compact Framework 支持 VT_DATE 指示 DATE 值。 
由 .NET Compact Framework 支持 VT_DECIMAL 指示 decimal 值。 
由 .NET Compact Framework 支持 VT_DISPATCH 指示 IDispatch 指针。 
由 .NET Compact Framework 支持 VT_EMPTY 指示未指定值。 
由 .NET Compact Framework 支持 VT_ERROR 指示 SCODE。 
由 .NET Compact Framework 支持 VT_FILETIME 指示 FILETIME 值。 
由 .NET Compact Framework 支持 VT_HRESULT 指示 HRESULT。 
由 .NET Compact Framework 支持 VT_I1 指示 char 值。 
由 .NET Compact Framework 支持 VT_I2 指示 short 整数。 
由 .NET Compact Framework 支持 VT_I4 指示 long 整数。 
由 .NET Compact Framework 支持 VT_I8 指示 64 位整数。 
由 .NET Compact Framework 支持 VT_INT 指示整数值。 
由 .NET Compact Framework 支持 VT_LPSTR 指示一个以 NULL 结尾的字符串。 
由 .NET Compact Framework 支持 VT_LPWSTR 指示由 空引用(在 Visual Basic 中为 Nothing) 终止的宽字符串。 
由 .NET Compact Framework 支持 VT_NULL 指示空值(类似于 SQL 中的空值)。 
由 .NET Compact Framework 支持 VT_PTR 指示指针类型。 
由 .NET Compact Framework 支持 VT_R4 指示 float 值。 
由 .NET Compact Framework 支持 VT_R8 指示 double 值。 
由 .NET Compact Framework 支持 VT_RECORD 指示用户定义的类型。 
由 .NET Compact Framework 支持 VT_SAFEARRAY 指示 SAFEARRAY。在 VARIANT 中无效。 
由 .NET Compact Framework 支持 VT_STORAGE 指示随后是存储的名称。 
由 .NET Compact Framework 支持 VT_STORED_OBJECT 指示存储包含对象。 
由 .NET Compact Framework 支持 VT_STREAM 指示随后是流的名称。 
由 .NET Compact Framework 支持 VT_STREAMED_OBJECT 指示流包含对象。 
由 .NET Compact Framework 支持 VT_UI1 指示 byte。 
由 .NET Compact Framework 支持 VT_UI2 指示 unsignedshort。 
由 .NET Compact Framework 支持 VT_UI4 指示 unsignedlong。 
由 .NET Compact Framework 支持 VT_UI8 指示 64 位无符号整数。 
由 .NET Compact Framework 支持 VT_UINT 指示 unsigned 整数值。 
由 .NET Compact Framework 支持 VT_UNKNOWN 指示 IUnknown 指针。 
由 .NET Compact Framework 支持 VT_USERDEFINED 指示用户定义的类型。 
由 .NET Compact Framework 支持 VT_VARIANT 指示 VARIANTfar 指针。 
由 .NET Compact Framework 支持 VT_VECTOR 指示简单的已计数数组。 
由 .NET Compact Framework 支持 VT_VOID 指示 C 样式 void。 

备注

System.Runtime.InteropServices.MarshalAsAttribute 一起使用以显式控制 SafeArray 的元素类型。

示例

Imports System
Imports System.Runtime.InteropServices

Module MyModule
    ' If you do not have a type library for an interface
    ' you can redeclare it using ComImportAttribute.

    ' This is how the interface would look in an idl file.

    '[
    'object,
    'uuid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26"),
    'dual,  helpstring("IMyStorage Interface"),
    'pointer_default(unique)
    ']
    'interface IMyStorage : IDispatch
    '{
    '   [id(1)]
    '   HRESULT GetItem([in] BSTR bstrName, [out, retval] IDispatch ** ppItem);
    '   [id(2)]
    '   HRESULT GetItems([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT)* pItems);
    '   [id(3)]
    '   HRESULT GetItemDescriptions([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT) ** ppItems);
    '   [id(4), propget]
    '   HRESULT get_IsEmpty([out, retval] BOOL * pfEmpty);
    '};

    ' This is the managed declaration.

    <ComImport(), Guid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26")> _
    Public Interface IMyStorage
        <DispId(1)> _
        Function GetItem(<InAttribute(), MarshalAs(UnmanagedType.BStr)> ByVal bstrName As String) _
           As <MarshalAs(UnmanagedType.Interface)> Object

        <DispId(2)> _
        Function GetItems(<InAttribute(), MarshalAs(UnmanagedType.BStr)> ByVal bstrLocation As String, _
           <OutAttribute(), MarshalAs(UnmanagedType.SafeArray)> ByVal Items() As Object)


        <DispId(3)> _
        Function GetItemDescriptions(<InAttribute()> ByVal bstrLocation As String, _
          <InAttribute(), OutAttribute(), MarshalAs(UnmanagedType.SafeArray)> ByRef varDescriptions() As Object)

        <DispId(4)> _
        ReadOnly Property IsEmpty(<MarshalAs(UnmanagedType.VariantBool)> ByVal bEmpty As Boolean)

    End Interface
End Module
using System;
using System.Runtime.InteropServices;

namespace MyModule
{
    // If you do not have a type library for an interface
    // you can redeclare it using ComImportAttribute.

    // This is how the interface would look in an idl file.

    //[
    //object,
    //uuid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26"),
    //dual, helpstring("IMyStorage Interface"),
    //pointer_default(unique)
    //]
    //interface IMyStorage : IDispatch
    //{
    //  [id(1)]
    //  HRESULT GetItem([in] BSTR bstrName, [out, retval] IDispatch ** ppItem);
    //  [id(2)]
    //  HRESULT GetItems([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT)* pItems);
    //  [id(3)]
    //  HRESULT GetItemDescriptions([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT) ** ppItems);
    //  [id(4), propget]
    //  HRESULT get_IsEmpty([out, retval] BOOL * pfEmpty);
    //};

    // This is the managed declaration.

    [ComImport]
    [Guid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26")]
    public interface IMyStorage  
    {
        [DispId(1)]
        [return : MarshalAs( UnmanagedType.Interface )]
        Object GetItem( [In, MarshalAs( UnmanagedType.BStr )] String bstrName );

        [DispId(2)]
        void GetItems( [In, MarshalAs( UnmanagedType.BStr )] String bstrLocation, 
            [Out, MarshalAs( UnmanagedType.SafeArray, 
                      SafeArraySubType = VarEnum.VT_VARIANT )] out Object[] Items );
                
                
        [DispId(3)]
        void GetItemDescriptions( [In] String bstrLocation, 
            [In, Out, MarshalAs( UnmanagedType.SafeArray )] ref Object[] varDescriptions );

        bool IsEmpty 
        {
            [DispId(4)]
            [return : MarshalAs( UnmanagedType.VariantBool )]
            get;
        }
    }
}
using namespace System;
using namespace System::Runtime::InteropServices;

// If you do not have a type library for an interface
// you can redeclare it using ComImportAttribute.
// This is how the interface would look in an idl file.
//[
//object,
//uuid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26"),
//dual, helpstring("IMyStorage Interface"),
//pointer_default(unique)
//]
//interface IMyStorage : IDispatch
//{
// [id(1)]
// HRESULT GetItem([in] BSTR bstrName, [out, retval] IDispatch ** ppItem);
// [id(2)]
// HRESULT GetItems([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT)* pItems);
// [id(3)]
// HRESULT GetItemDescriptions([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT) ** ppItems);
// [id(4), propget]
// HRESULT get_IsEmpty([out, retval] BOOL * pfEmpty);
//};
// This is the managed declaration.

[ComImport]
[Guid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26")]
interface class IMyStorage
{
   [DispId(1)]
   Object^ GetItem( [In,MarshalAs(UnmanagedType::BStr)]String^ bstrName );

   //[return : MarshalAs(UnmanagedType::Interface)]

   [DispId(2)]
   void GetItems( [In,MarshalAs(UnmanagedType::BStr)]String^ bstrLocation, [Out,MarshalAs(UnmanagedType::SafeArray,
   SafeArraySubType=VarEnum::VT_VARIANT)]array<Object^>^Items );

   [DispId(3)]
   void GetItemDescriptions( [In]String^ bstrLocation, [In,Out,MarshalAs(UnmanagedType::SafeArray)]array<Object^>^varDescriptions );

   property bool IsEmpty 
   {
      [DispId(4)]
      [returnvalue:MarshalAs(UnmanagedType::VariantBool)]
      bool get();
   }
};
import System.*;
import System.Runtime.InteropServices.*;
   
    // If you do not have a type library for an interface
    // you can redeclare it using ComImportAttribute.
    // This is how the interface would look in an idl file.
    // [
    // object,
    // uuid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26"),
    // dual,    helpstring("IMyStorage Interface"),
    // pointer_default(unique)
    // ]
    // interface IMyStorage : IDispatch
    // {
    //    [id(1)]
    //    HRESULT GetItem([in] BSTR bstrName, [out, retval] IDispatch ** ppItem);
    //    [id(2)]
    //    HRESULT GetItems([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT)* pItems);
    //    [id(3)]
    //    HRESULT GetItemDescriptions([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT) ** ppItems);
    //    [id(4), propget]
    //    HRESULT get_IsEmpty([out, retval] BOOL * pfEmpty);
    // };
    //  This is the managed declaration.
    /** @attribute ComImport()
     */
    /** @attribute Guid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26")
     */
   public interface IMyStorage
   {
        /** @attribute DispId(1)
         */
        Object GetItem(
        /** @attribute In()
            @attribute MarshalAs(UnmanagedType.BStr)
         */String bstrName);
      
      
        /** @attribute DispId(2)
         */
        void GetItems(
        /** @attribute In()
            @attribute MarshalAs(UnmanagedType.BStr)
         */String bstrLocation,
        /** @attribute Out()
            @attribute MarshalAs(UnmanagedType.SafeArray, 
            SafeArraySubType = VarEnum.VT_VARIANT)
         */Object Items[]);
             
        /** @attribute DispId(3)
         */
        void GetItemDescriptions(
            /** @attribute In()
             */String bstrLocation,
            /** @attribute In()
                @attribute Out()
                @attribute MarshalAs(UnmanagedType.SafeArray)
             */Object varDescriptions[]);
               
        /** @attribute DispId(4)
         */
        /** @return MarshalAs(UnmanagedType.VariantBool)
         */
        boolean get_IsEmpty();
    } //IMyStorage

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0

请参见

参考

System.Runtime.InteropServices 命名空间
SafeArray
MarshalAsAttribute 类