VARIANT and VARIANTARG
9/8/2008
A estrutura Variant e VARIANTARG é usada para descrever argumentos passados dentro de estruturas DISPPARAMS.
Syntax
struct tagVARIANT
{
union
{
struct __tagVARIANT
{
VARTYPE vt;
WORD wReserved1;
WORD wReserved2;
WORD wReserved3;
union
{
LONG lVal;
BYTE bVal;
SHORT iVal;
FLOAT fltVal;
DOUBLE dblVal;
VARIANT_BOOL boolVal;
_VARIANT_BOOL bool;
SCODE scode;
CY cyVal;
DATE date;
BSTR bstrVal;
IUnknown __RPC_FAR* punkVal;
IDispatch __RPC_FAR* pdispVal;
SAFEARRAY __RPC_FAR* parray;
BYTE __RPC_FAR* pbVal;
SHORT __RPC_FAR* piVal;
LONG __RPC_FAR* plVal;
FLOAT __RPC_FAR* pfltVal;
DOUBLE __RPC_FAR* pdblVal;
VARIANT_BOOL __RPC_FAR* pboolVal;
_VARIANT_BOOL __RPC_FAR* pbool;
SCODE __RPC_FAR* pscode;
CY __RPC_FAR* pcyVal;
DATE __RPC_FAR* pdate;
BSTR __RPC_FAR* pbstrVal;
IUnknown __RPC_FAR*__RPC_FAR * ppunkVal;
IDispatch __RPC_FAR*__RPC_FAR * ppdispVal;
SAFEARRAY __RPC_FAR*__RPC_FAR * pparray;
VARIANT __RPC_FAR* pvarVal;
PVOID byref;
CHAR cVal;
USHORT uiVal;
ULONG ulVal;
INT intVal;
UINT uintVal;
DECIMAL __RPC_FAR* pdecVal;
CHAR __RPC_FAR* pcVal;
USHORT __RPC_FAR* puiVal;
ULONG __RPC_FAR* pulVal;
INT __RPC_FAR* pintVal;
UINT __RPC_FAR* puintVal;
struct __tagBRECORD
{
PVOID pvRecord;
IRecordInfo __RPC_FAR* pRecInfo;
} __VARIANT_NAME_4;
} __VARIANT_NAME_3;
} __VARIANT_NAME_2;
DECIMAL decVal;
} __VARIANT_NAME_1;
};
typedef /* [wire_marshal] */ struct tagVARIANT VARIANT;
typedef VARIANT __RPC_FAR *LPVARIANT;
typedef VARIANT VARIANTARG;
typedef VARIANT __RPC_FAR *LPVARIANTARG;
Os membros
- VT
Contém a codificar tipo para a variante, que determina como a variante é interpretado. Para obter mais informações, consulte " Comentários ".
- wReserved1
Reservado. PADs a estrutura assim a variante dados começa em um oito-limite byte.
- wReserved2
Reservado. PADs a estrutura assim a variante dados começa em um oito-limite byte.
- wReserved3
Reservado. PADs a estrutura assim a variante dados começa em um oito-limite byte.
- lVal
VT_l4. Para obter mais informações, consulte " Comentários ".
- bVal
VT_UI1. Para obter mais informações, consulte " Comentários ".
- iVal
VT_I2. Para obter mais informações, consulte " Comentários ".
- fltVal
VT_R4. Para obter mais informações, consulte " Comentários ".
- dblVal
VT_R8. Para obter mais informações, consulte " Comentários ".
- boolVal
VT_BOOL. Para obter mais informações, consulte " Comentários ".
- bool
Para obter mais informações, consulte " Comentários ".
- SCode
VT_ERROR. Para obter mais informações, consulte " Comentários ".
- cyVal
VT_CY. Para obter mais informações, consulte " Comentários ".
- Data
VT_DATE. Para obter mais informações, consulte " Comentários ".
- bstrVal
VT_BSTR. Para obter mais informações, consulte " Comentários ".
- punkVal
VT_UNKNOWN. Para obter mais informações, consulte " Comentários ".
- pdispVal
VT_DISPATCH. Para obter mais informações, consulte " Comentários ".
- parray
VT_ARRAY | *. Para obter mais informações, consulte " Comentários ".
- pbVal
VT_BYREF | VT_UI1. Para obter mais informações, consulte " Comentários ".
- piVal
VT_BYREF | VT_I2. Para obter mais informações, consulte " Comentários ".
- plVal
VT_BYREF | VT_l4. Para obter mais informações, consulte " Comentários ".
- pfltVal
VT_BYREF | VT_R4. Para obter mais informações, consulte " Comentários ".
- pdblVal
VT_BYREF | VT_R8. Para obter mais informações, consulte " Comentários ".
- pboolVal
VT_BYREF | VT_BOOL. Para obter mais informações, consulte " Comentários ".
- pbool
Para obter mais informações, consulte " Comentários ".
- pscode
VT_BYREF | VT_ERROR. Para obter mais informações, consulte " Comentários ".
- pcyVal
VT_BYREF | VT_CY. Para obter mais informações, consulte " Comentários ".
- at alizar
VT_BYREF | VT_DATE. Para obter mais informações, consulte " Comentários ".
- pbstrVal
VT_BYREF | VT_BSTR. Para obter mais informações, consulte " Comentários ".
- ppunkVal
VT_BYREF | VT_UNKNOWN. Para obter mais informações, consulte " Comentários ".
- ppdispVal
VT_BYREF | VT_DISPATCH. Para obter mais informações, consulte " Comentários ".
- pparray
VT_ARRAY | *. Para obter mais informações, consulte " Comentários ".
- pvarVal
VT_BYREF | VT_VARIANT. Para obter mais informações, consulte " Comentários ".
- ByRef
Ponteiro de referência genérico.
- cVal
VT_I1. Para obter mais informações, consulte " Comentários ".
- uiVal
VT_UI2. Para obter mais informações, consulte " Comentários ".
- ulVal
VT_UI4. Para obter mais informações, consulte " Comentários ".
- intVal
VT_INT. Para obter mais informações, consulte " Comentários ".
- uintVal
VT_UINT. Para obter mais informações, consulte " Comentários ".
- pdecVal
VT_DECIMAL | VT_BYREF. Para obter mais informações, consulte " Comentários ".
- pcVal
VT_I1 | VT_BYREF. Para obter mais informações, consulte " Comentários ".
- puiVal
VT_UI2 | VT_BYREF. Para obter mais informações, consulte " Comentários ".
- pulVal
VT_UI4 | VT_BYREF. Para obter mais informações, consulte " Comentários ".
- pintVal
VT_INT | VT_BYREF. Para obter mais informações, consulte " Comentários ".
- puintVal
VT_UINT | VT_BYREF. Para obter mais informações, consulte " Comentários ".
- pvRecord
Para obter mais informações, consulte " Comentários ".
- pRecInfo
Para obter mais informações, consulte " Comentários ".
- decVal
Para obter mais informações, consulte " Comentários ".
Remarks
Para simplificar extrair valores de VARIANTARGs, automação fornece um conjunto de funções para manipular esse tipo. Uso dessas funções é muito recomendado para garantir que aplicativos consistente aplicar regras coercion.
O Variant tipo não pode ter o VT_BYREF Conjunto bit.
O VT valor rege a interpretação de união. A seguinte tabela mostra os possíveis valores para VT.
Valor | Descrição |
---|---|
VT_ARRAY | < nada > |
Uma matriz de tipo de dados < nada > foi passado. VT_EMPTY e VT_NULL são tipos inválido para combinar com VT_ARRAY. O ponteiro no pbyrefVal aponta para um descritor de matriz, que descreve as dimensões, tamanho e em-memória localidade da matriz. |
VT_BOOL |
Um Boolean, Verdadeiro/Falso, valor foi especificado. Um valor de 0xffff, todos os bits definidos como um, indica verdadeiro; Um valor de 0x0000, todos os bits definidos como zero, indica False. Há outros valores são válido. |
VT_BOOL | VT_BYREF |
Uma referência a um Boolean valor. Um ponteiro para o Boolean valor está em pbool. |
VT_BSTR |
Foi passado um seqüência de caracteres; Ela é armazenada no bstrVal. Esse ponteiro deve ser obtido e liberado pelas funções BSTR. |
VT_BSTR | VT_BYREF |
Uma referência a um seqüência de caracteres foi passada. Um BSTR* que aponta para um BSTR está no pbstrVal. O relacionado ponteiro deve ser obtido ou liberado pelas funções BSTR. |
VT_CY |
Foi especificado um valor unidade monetária. Um número unidade monetária é armazenado como um 8-byte, do dois complementam inteiro, em escala por 10.000 para fornecer um número do ponto fixo com 15 dígitos a para a esquerda da ponto decimal e 4 dígitos para o direito. O valor está em cyVal. |
VT_CY | VT_BYREF |
Uma referência a um valor unidade monetária foi passada. Um ponteiro para o valor está em pcyVal. |
VT_DATE |
Um valor indicando uma data e tempo foi especificado. As datas são representadas como números de precisão dupla, onde a meia-noite, de 1 º de janeiro de 1900 é 2.0, 2 de janeiro de 1900 é 3.0 e assim por diante. O valor é passado Data. Este é a mesma numeração sistema usado pela maioria dos programas planilha eletrônica, embora alguns especificar incorretamente que February 29, 1900 existia e, portanto, defina January 1, 1900 como 1.0. |
VT_DATE | VT_BYREF |
Uma referência a uma data foi passada. Um ponteiro para o valor está em at alizar. |
VT_DECIMAL | VT_BYREF |
Uma referência a um decimal valor passado. Um ponteiro para o valor está em pdecVal. |
VT_DISPATCH |
Um ponteiro para um objeto foi especificado. O ponteiro está em pdispVal. Este objeto é conhecido somente para implementar IDispatch. O objeto pode ser consultado para se ele oferece suporte a qualquer outra interface desejado por chamado Falha de QueryInterface Sobre o objeto. Objetos que não implementar IDispatch devem ser passados usando VT_UNKNOWN. |
VT_DISPATCH | VT_BYREF |
Um ponteiro para um ponteiro para um objeto foi especificado. O ponteiro para o objeto é armazenado na localidade referida por ppdispVal. |
VT_EMPTY |
Nenhum valor foi especificado. Se um argumento para um método automação é deixado opcional em branco, fazer não transmitir um Variant do tipo VT_EMPTY. Em vez disso, transmitir um Variant do tipo VT_ERROR com um valor de DISP_E_PARAMNOTFOUND. |
VT_EMPTY | VT_BYREF |
Não válido. |
VT_ERROR |
Foi especificado um SCODE. O tipo do erro é especificado na SCode. Geralmente, as operações em valores de erro devem aumentar uma exceção ou propagar o erro para o valor de retorno, como apropriado. |
VT_ERROR | VT_BYREF |
Uma referência a um SCODE foi passada. Um ponteiro para o valor está em pscode. |
VT_I1 |
Um 1-byte caractere valor é armazenado em cVal. |
VT_I1 | VT_BYREF |
Uma referência a um 1-caractere byte foi passado. Um ponteiro o valor está em pcVal. |
VT_I2 |
Um 2-valor inteiro byte é armazenado em iVal. |
VT_I2 | VT_BYREF |
Uma referência a um 2-byte inteiro foi passado. Um ponteiro para o valor está em piVal. |
VT_l4 |
Um 4-valor inteiro byte é armazenado em lVal. |
VT_l4 | VT_BYREF |
Uma referência a um 4-byte inteiro foi passado. Um ponteiro para o valor está em plVal. |
VT_INT |
Um valor inteiro é armazenado em intVal. |
VT_INT | VT_BYREF |
Uma referência a um valor inteiro foi passada. Um ponteiro para o valor está em pintVal. |
VT_NULL |
Um NULL propagando valor foi especificado. (Isso não deve ser confundido com o ponteiro nulo.) O NULL valor é usado para Tri-estado lógica, como com SQL. |
VT_NULL | VT_BYREF |
Não válido. |
VT_R4 |
Um IEEE 4-valor real byte é armazenada nofltVal. |
VT_R4 | VT_BYREF |
Uma referência a um IEEE 4-valor real byte foi passado. Um ponteiro para o valor está em pfltVal. |
VT_R8 |
Um 8-valor real byte IEEE é armazenada no dblVal. |
VT_R8 | VT_BYREF |
Uma referência a um 8-valor real byte IEEE foi passado. Um ponteiro para seu valor está em pdblVal. |
VT_UI1 |
Uma sem assinatura 1-byte caractere é armazenado em bVal. |
VT_UI1 | VT_BYREF |
Uma referência a uma sem assinatura 1-caractere byte foi passado. Um ponteiro para o valor está em pbVal. |
VT_UI2 |
Um valor unsigned 2-byte integer é armazenada no uiVal. |
VT_UI2 | VT_BYREF |
Uma referência a um unsigned 2-byte integer foi passada. Um ponteiro para o valor está em puiVal. |
VT_UI4 |
Um valor unsigned 4-byte integer é armazenada no ulVal. |
VT_UI4 | VT_BYREF |
Uma referência a um unsigned 4-byte integer foi passada. Um ponteiro para o valor está em pulVal. |
VT_UINT |
Uma sem assinatura valor inteiro é armazenado em uintVal. |
VT_UINT | VT_BYREF |
Uma referência a uma sem assinatura valor inteiro foi passado. Um ponteiro para o valor está em puintVal. |
VT_UNKNOWN |
Um ponteiro para um objeto que implementa o IUnknown interface é passadopunkVal. |
VT_UNKNOWN | VT_BYREF |
Um ponteiro para o IUnknown interface é passado ppunkVal. O ponteiro para a interface é armazenado na localidade referida por ppunkVal. |
VT_VARIANT |
Inválido. VARIANTARGs devem ser passados por referência. |
VT_VARIANT | VT_BYREF |
Um ponteiro para outro VARIANTARG é passado pvarVal. Este relacionado VARIANTARG nunca terão o bit VT_BYREF definir em VT, portanto, apenas um nível de engano pode já estar presente. Este valor pode ser usado para suporte idiomas que permitem funções para alteração os tipos de variáveis passadas por referência |
Requirements
Header | oaidl.h |
Windows Embedded CE | Windows CE 2.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |