System.Runtime.InteropServices.VarEnum Enumeration

Assembly: Mscorlib.dll
Namespace: System.Runtime.InteropServices
Summary
Indicates how the array elements should be marshaled when an array is marshaled from managed to unmanaged code as a System.Runtime.InteropServices.UnmanagedType.SafeArray (not supported on the shared source CLI) .
C# Syntax:
[Serializable]
public enum VarEnum
Remarks
Used with MarshalAsAttribute to explicitly control the element type of the System.Runtime.InteropServices.UnmanagedType.SafeArray (not supported on the shared source CLI) .
Example
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;
		}
	}
}

    
See also:
System.Runtime.InteropServices Namespace

System.Runtime.InteropServices.VarEnum Member List:

Public Fields
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_EMPTY
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 null terminated string.
VT_LPWSTR Indicates a wide string terminated by null.
VT_NULL Indicates null similar to 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.

Hierarchy:


Top of page

Copyright (c) 2002 Microsoft Corporation. All rights reserved.