VarEnum Enumeration
TOC
Collapse the table of content
Expand the table of content

VarEnum Enumeration

 

Indicates how to marshal the array elements when an array is marshaled from managed to unmanaged code as a UnmanagedType.SafeArray.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum VarEnum

Member nameDescription
VT_ARRAY

Indicates a SAFEARRAY pointer.

VT_BLOB

Indicates length prefixed bytes.

VT_BLOB_OBJECT

Indicates that a blob contains an object.

VT_BOOL

Indicates a Boolean value.

VT_BSTR

Indicates a BSTR string.

VT_BYREF

Indicates that a value is a reference.

VT_CARRAY

Indicates a C style array.

VT_CF

Indicates the clipboard format.

VT_CLSID

Indicates a class ID.

VT_CY

Indicates a currency value.

VT_DATE

Indicates a DATE value.

VT_DECIMAL

Indicates a decimal value.

VT_DISPATCH

Indicates an IDispatch pointer.

VT_EMPTY

Indicates that a value was not specified.

VT_ERROR

Indicates an SCODE.

VT_FILETIME

Indicates a FILETIME value.

VT_HRESULT

Indicates an HRESULT.

VT_I1

Indicates a char value.

VT_I2

Indicates a short integer.

VT_I4

Indicates a long integer.

VT_I8

Indicates a 64-bit integer.

VT_INT

Indicates an integer value.

VT_LPSTR

Indicates a null-terminated string.

VT_LPWSTR

Indicates a wide string terminated by null.

VT_NULL

Indicates a null value, similar to a null value in SQL.

VT_PTR

Indicates a pointer type.

VT_R4

Indicates a float value.

VT_R8

Indicates a double value.

VT_RECORD

Indicates a user defined type.

VT_SAFEARRAY

Indicates a SAFEARRAY. Not valid in a VARIANT.

VT_STORAGE

Indicates that the name of a storage follows.

VT_STORED_OBJECT

Indicates that a storage contains an object.

VT_STREAM

Indicates that the name of a stream follows.

VT_STREAMED_OBJECT

Indicates that a stream contains an object.

VT_UI1

Indicates a byte.

VT_UI2

Indicates an unsignedshort.

VT_UI4

Indicates an unsignedlong.

VT_UI8

Indicates an 64-bit unsigned integer.

VT_UINT

Indicates an unsigned integer value.

VT_UNKNOWN

Indicates an IUnknown pointer.

VT_USERDEFINED

Indicates a user defined type.

VT_VARIANT

Indicates a VARIANT far pointer.

VT_VECTOR

Indicates a simple, counted array.

VT_VOID

Indicates a C style void.

Used with System.Runtime.InteropServices.MarshalAsAttribute to explicitly control the element type of the SafeArray.

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;
		}
	}
}

Universal Windows Platform
Available since 4.5
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Windows Phone
Available since 8.1
Return to top
Show:
© 2016 Microsoft