Compartilhar via


VARIANT and VARIANTARG

Windows Mobile SupportedWindows Embedded CE Supported

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

See Also

Reference

Automation Structures
DISPPARAMS