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_EMPTY | 0 | Указывает, что значение не указано. |
| VT_NULL | 1 | Указывает значение NULL, аналогичное значению NULL в SQL. |
| VT_I2 | 2 | Указывает |
| VT_I4 | 3 | Указывает |
| VT_R4 | 4 | Указывает |
| VT_R8 | 5 | Указывает |
| VT_CY | 6 | Указывает значение валюты. |
| VT_DATE | 7 | Указывает значение DATE. |
| VT_BSTR | 8 | Указывает строку BSTR. |
| VT_DISPATCH | 9 | Указывает |
| VT_ERROR | 10 | Указывает SCODE. |
| VT_BOOL | 11 | Указывает логическое значение. |
| VT_VARIANT | 12 | Указывает указатель VARIANT |
| VT_UNKNOWN | 13 | Указывает |
| VT_DECIMAL | 14 | Указывает |
| VT_I1 | 16 | Указывает |
| VT_UI1 | 17 | Указывает . |
| VT_UI2 | 18 | Указывает . |
| VT_UI4 | 19 | Указывает . |
| VT_I8 | 20 | Указывает 64-разрядное целое число. |
| VT_UI8 | 21 | Указывает 64-разрядное целое число без знака. |
| VT_INT | 22 | Указывает целочисленное значение. |
| VT_UINT | 23 | Указывает целочисленное |
| VT_VOID | 24 | Указывает стиль |
| VT_HRESULT | 25 | Указывает HRESULT. |
| VT_PTR | 26 | Указывает тип указателя. |
| VT_SAFEARRAY | 27 | Указывает SAFEARRAY. Недопустимый в VARIANT. |
| VT_CARRAY | 28 | Указывает массив стилей C. |
| VT_USERDEFINED | 29 | Указывает определяемый пользователем тип. |
| VT_LPSTR | 30 | Указывает строку, завершаемую значением NULL. |
| VT_LPWSTR | 31 | Указывает широкую строку, завершаемую |
| VT_RECORD | 36 | Указывает определяемый пользователем тип. |
| VT_FILETIME | 64 | Указывает значение FILETIME. |
| VT_BLOB | 65 | Указывает длину префиксированных байтов. |
| VT_STREAM | 66 | Указывает, что имя потока следует. |
| VT_STORAGE | 67 | Указывает, что имя хранилища следует. |
| VT_STREAMED_OBJECT | 68 | Указывает, что поток содержит объект. |
| VT_STORED_OBJECT | 69 | Указывает, что хранилище содержит объект. |
| VT_BLOB_OBJECT | 70 | Указывает, что большой двоичный объект содержит объект. |
| VT_CF | 71 | Указывает формат буфера обмена. |
| VT_CLSID | 72 | Указывает идентификатор класса. |
| VT_VECTOR | 4096 | Указывает простой подсчет массива. |
| VT_ARRAY | 8192 | Указывает |
| VT_BYREF | 16384 | Указывает, что значение является ссылкой. |
Примеры
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элемента.