VarEnum VarEnum VarEnum VarEnum Enum

Определение

Предупреждение

Этот API устарел.

Указывает, каким образом следует маршалировать элементы массива при маршалинге массива из управляемого в неуправляемый код как SafeArray.Indicates how to marshal the array elements when an array is marshaled from managed to unmanaged code as a SafeArray.

public enum class VarEnum
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
[System.Obsolete("Marshalling VARIANTs may be unavailable in future releases.")]
public enum VarEnum
type VarEnum = 
Public Enum VarEnum
Наследование
Атрибуты

Поля

VT_ARRAY VT_ARRAY VT_ARRAY VT_ARRAY 8192

Указывает SAFEARRAY указатель.Indicates a SAFEARRAY pointer.

VT_BLOB VT_BLOB VT_BLOB VT_BLOB 65

Указывает длину префикса в байтах.Indicates length prefixed bytes.

VT_BLOB_OBJECT VT_BLOB_OBJECT VT_BLOB_OBJECT VT_BLOB_OBJECT 70

Указывает, что большой двоичный объект содержит объект.Indicates that a blob contains an object.

VT_BOOL VT_BOOL VT_BOOL VT_BOOL 11

Указывает логическое значение.Indicates a Boolean value.

VT_BSTR VT_BSTR VT_BSTR VT_BSTR 8

Показывает строку BSTR.Indicates a BSTR string.

VT_BYREF VT_BYREF VT_BYREF VT_BYREF 16384

Указывает, что значение является ссылкой.Indicates that a value is a reference.

VT_CARRAY VT_CARRAY VT_CARRAY VT_CARRAY 28

Указывает массив в стиле C.Indicates a C style array.

VT_CF VT_CF VT_CF VT_CF 71

Указывает формат буфера обмена.Indicates the clipboard format.

VT_CLSID VT_CLSID VT_CLSID VT_CLSID 72

Указывает идентификатор класса.Indicates a class ID.

VT_CY VT_CY VT_CY VT_CY 6

Показывает денежное значение.Indicates a currency value.

VT_DATE VT_DATE VT_DATE VT_DATE 7

Указывает значение даты.Indicates a DATE value.

VT_DECIMAL VT_DECIMAL VT_DECIMAL VT_DECIMAL 14

Указывает decimal значение.Indicates a decimal value.

VT_DISPATCH VT_DISPATCH VT_DISPATCH VT_DISPATCH 9

Указывает IDispatch указатель.Indicates an IDispatch pointer.

VT_EMPTY VT_EMPTY VT_EMPTY VT_EMPTY 0

Указывает, что значение не указано.Indicates that a value was not specified.

VT_ERROR VT_ERROR VT_ERROR VT_ERROR 10

Показывает SCODE.Indicates an SCODE.

VT_FILETIME VT_FILETIME VT_FILETIME VT_FILETIME 64

Показывает значение FILETIME.Indicates a FILETIME value.

VT_HRESULT VT_HRESULT VT_HRESULT VT_HRESULT 25

Показывает значение HRESULT.Indicates an HRESULT.

VT_I1 VT_I1 VT_I1 VT_I1 16

Указывает char значение.Indicates a char value.

VT_I2 VT_I2 VT_I2 VT_I2 2

Указывает short целое число.Indicates a short integer.

VT_I4 VT_I4 VT_I4 VT_I4 3

Указывает long целое число.Indicates a long integer.

VT_I8 VT_I8 VT_I8 VT_I8 20

Показывает 64-разрядное целое число.Indicates a 64-bit integer.

VT_INT VT_INT VT_INT VT_INT 22

Указывает целочисленное значение.Indicates an integer value.

VT_LPSTR VT_LPSTR VT_LPSTR VT_LPSTR 30

Указывает строку, завершающуюся символом null.Indicates a null-terminated string.

VT_LPWSTR VT_LPWSTR VT_LPWSTR VT_LPWSTR 31

Показывает двухбайтную строку, завершенную null.Indicates a wide string terminated by null.

VT_NULL VT_NULL VT_NULL VT_NULL 1

Показывает значение null, аналогичное значению null в SQL.Indicates a null value, similar to a null value in SQL.

VT_PTR VT_PTR VT_PTR VT_PTR 26

Показывает тип указателя.Indicates a pointer type.

VT_R4 VT_R4 VT_R4 VT_R4 4

Указывает float значение.Indicates a float value.

VT_R8 VT_R8 VT_R8 VT_R8 5

Указывает double значение.Indicates a double value.

VT_RECORD VT_RECORD VT_RECORD VT_RECORD 36

Указывает определяемый пользователем тип.Indicates a user defined type.

VT_SAFEARRAY VT_SAFEARRAY VT_SAFEARRAY VT_SAFEARRAY 27

Показывает SAFEARRAY.Indicates a SAFEARRAY. Не является допустимым в ВАРИАНТЕ.Not valid in a VARIANT.

VT_STORAGE VT_STORAGE VT_STORAGE VT_STORAGE 67

Указывает, что Далее следует имя хранилища.Indicates that the name of a storage follows.

VT_STORED_OBJECT VT_STORED_OBJECT VT_STORED_OBJECT VT_STORED_OBJECT 69

Указывает, что хранилище содержит объект.Indicates that a storage contains an object.

VT_STREAM VT_STREAM VT_STREAM VT_STREAM 66

Указывает, что Далее следует имя потока.Indicates that the name of a stream follows.

VT_STREAMED_OBJECT VT_STREAMED_OBJECT VT_STREAMED_OBJECT VT_STREAMED_OBJECT 68

Указывает, что поток содержит объект.Indicates that a stream contains an object.

VT_UI1 VT_UI1 VT_UI1 VT_UI1 17

Указывает byte.Indicates a byte.

VT_UI2 VT_UI2 VT_UI2 VT_UI2 18

Указывает unsigned short.Indicates an unsignedshort.

VT_UI4 VT_UI4 VT_UI4 VT_UI4 19

Указывает unsigned long.Indicates an unsignedlong.

VT_UI8 VT_UI8 VT_UI8 VT_UI8 21

Показывает 64-разрядное целое число без знака.Indicates an 64-bit unsigned integer.

VT_UINT VT_UINT VT_UINT VT_UINT 23

Указывает unsigned целочисленное значение.Indicates an unsigned integer value.

VT_UNKNOWN VT_UNKNOWN VT_UNKNOWN VT_UNKNOWN 13

Указывает IUnknown указатель.Indicates an IUnknown pointer.

VT_USERDEFINED VT_USERDEFINED VT_USERDEFINED VT_USERDEFINED 29

Указывает определяемый пользователем тип.Indicates a user defined type.

VT_VARIANT VT_VARIANT VT_VARIANT VT_VARIANT 12

Указывает ВАРИАНТ far указатель.Indicates a VARIANT far pointer.

VT_VECTOR VT_VECTOR VT_VECTOR VT_VECTOR 4096

Показывает одномерный сосчитанный массив.Indicates a simple, counted array.

VT_VOID VT_VOID VT_VOID VT_VOID 24

Указывает стиль C void.Indicates a C style void.

Примеры

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();
   }
};
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;
		}
	}
}
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, SafeArraySubType := VarEnum.VT_VARIANT)> _
                                      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

Комментарии

Используется с System.Runtime.InteropServices.MarshalAsAttribute явным образом контролировать тип элемента SafeArray.Used with System.Runtime.InteropServices.MarshalAsAttribute to explicitly control the element type of the SafeArray.

Применяется к

Дополнительно