VarEnum Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Внимание!
Marshalling VARIANTs may be unavailable in future releases.
Показывает способ маршалинга элементов массива при маршалинге массива из управляемого кода в неуправляемый код как массива SafeArray.
public enum class VarEnum
[System.Obsolete("Marshalling VARIANTs may be unavailable in future releases.")]
public enum VarEnum
public enum VarEnum
[System.Serializable]
public enum VarEnum
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum VarEnum
[<System.Obsolete("Marshalling VARIANTs may be unavailable in future releases.")>]
type VarEnum =
type VarEnum =
[<System.Serializable>]
type VarEnum =
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type VarEnum =
Public Enum VarEnum
- Наследование
- Атрибуты
Поля
VT_ARRAY | 8192 | Показывает указатель |
VT_BLOB | 65 | Показывает длину префикса в байтах. |
VT_BLOB_OBJECT | 70 | Показывает, что BLOB-объект содержит объект. |
VT_BOOL | 11 | Показывает логическое значение (Boolean). |
VT_BSTR | 8 | Показывает строку BSTR. |
VT_BYREF | 16384 | Показывает, что значение является ссылкой. |
VT_CARRAY | 28 | Показывает массив в стиле языка C. |
VT_CF | 71 | Показывает формат буфера. |
VT_CLSID | 72 | Показывает идентификатор ID класса. |
VT_CY | 6 | Показывает денежное значение. |
VT_DATE | 7 | Показывает значение DATE. |
VT_DECIMAL | 14 | Показывает значение |
VT_DISPATCH | 9 | Показывает указатель |
VT_EMPTY | 0 | Показывает, что значение не задано. |
VT_ERROR | 10 | Показывает SCODE. |
VT_FILETIME | 64 | Показывает значение FILETIME. |
VT_HRESULT | 25 | Показывает значение HRESULT. |
VT_I1 | 16 | Показывает значение |
VT_I2 | 2 | Показывает целое число |
VT_I4 | 3 | Показывает целое число |
VT_I8 | 20 | Показывает 64-разрядное целое число. |
VT_INT | 22 | Показывает целочисленное значение. |
VT_LPSTR | 30 | Показывает строку, заканчивающуюся нулем. |
VT_LPWSTR | 31 | Показывает двухбайтную строку, завершенную |
VT_NULL | 1 | Показывает значение null, аналогичное значению null в SQL. |
VT_PTR | 26 | Показывает тип указателя. |
VT_R4 | 4 | Показывает значение |
VT_R8 | 5 | Показывает значение |
VT_RECORD | 36 | Показывает тип, определенный пользователем. |
VT_SAFEARRAY | 27 | Показывает SAFEARRAY. Не допустимо для значений типа VARIANT. |
VT_STORAGE | 67 | Показывает, что далее следует имя хранилища. |
VT_STORED_OBJECT | 69 | Показывает, что хранилище содержит объект. |
VT_STREAM | 66 | Показывает, что далее следует имя потока. |
VT_STREAMED_OBJECT | 68 | Показывает, что поток содержит объект. |
VT_UI1 | 17 | Показывает |
VT_UI2 | 18 | Показывает |
VT_UI4 | 19 | Показывает |
VT_UI8 | 21 | Показывает 64-разрядное целое число без знака. |
VT_UINT | 23 | Показывает целое число |
VT_UNKNOWN | 13 | Показывает указатель |
VT_USERDEFINED | 29 | Показывает тип, определенный пользователем. |
VT_VARIANT | 12 | Показывает указатель |
VT_VECTOR | 4096 | Показывает одномерный сосчитанный массив. |
VT_VOID | 24 | Показывает |
Примеры
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.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элемента .