struktur WIA_PROPERTY_INFO (wiamindr_lh.h)

Struktur WIA_PROPERTY_INFO digunakan untuk menyimpan akses default dan informasi nilai yang valid untuk properti item jenis arbitrer.

Sintaks

typedef struct _WIA_PROPERTY_INFO {
  ULONG   lAccessFlags;
  VARTYPE vt;
  union {
    struct {
      LONG Min;
      LONG Nom;
      LONG Max;
      LONG Inc;
    } Range;
    struct {
      DOUBLE Min;
      DOUBLE Nom;
      DOUBLE Max;
      DOUBLE Inc;
    } RangeFloat;
    struct {
      LONG cNumList;
      LONG Nom;
      BYTE *pList;
    } List;
    struct {
      LONG   cNumList;
      DOUBLE Nom;
      BYTE   *pList;
    } ListFloat;
    struct {
      LONG cNumList;
      GUID Nom;
      GUID *pList;
    } ListGuid;
    struct {
      LONG cNumList;
      BSTR Nom;
      BSTR *pList;
    } ListBStr;
    struct {
      LONG Nom;
      LONG ValidBits;
    } Flag;
    struct {
      LONG Dummy;
    } None;
  } ValidVal;
} WIA_PROPERTY_INFO, *PWIA_PROPERTY_INFO;

Anggota

lAccessFlags

Menentukan bendera atribut akses dan properti untuk properti. Untuk informasi selengkapnya, lihat Atribut Properti.

vt

Menentukan jenis data varian untuk properti . Anggota ini, yang dapat menjadi salah satu dari berikut ini, mengontrol anggota struktur ValidValunion mana yang valid:

  • VT_UI1

  • VT_UI2

  • VT_UI4

  • VT_I2

  • VT_I4

  • VT_R4

  • VT_R8

  • VT_CLSID

  • VT_BSTR

Untuk informasi selengkapnya, lihat PROPVARIANT.

ValidVal

ValidVal.Range

Struktur yang diisi saat nilai valid properti ditentukan oleh rentang nilai bilangan bulat.

ValidVal.Range.Min

Nilai minimum properti.

ValidVal.Range.Nom

Nilai nominal properti.

ValidVal.Range.Max

Nilai maksimum properti.

ValidVal.Range.Inc

Nilai kenaikan yang dapat digunakan.

ValidVal.RangeFloat

Struktur yang diisi ketika nilai valid properti ditentukan oleh rentang nilai floating-point dan jenis properti adalah float atau ganda.

ValidVal.RangeFloat.Min

Nilai minimum properti.

ValidVal.RangeFloat.Nom

Nilai nominal properti.

ValidVal.RangeFloat.Max

Nilai maksimum properti.

ValidVal.RangeFloat.Inc

Nilai kenaikan yang dapat digunakan.

ValidVal.List

Struktur yang diisi saat nilai valid properti ditentukan oleh daftar nilai bilangan bulat.

ValidVal.List.cNumList

Jumlah elemen dalam array nilai valid yang titik pList-nya .

ValidVal.List.Nom

Nilai nominal properti.

ValidVal.List.pList

Array nilai yang valid, properti dapat diatur ke.

ValidVal.ListFloat

Struktur yang diisi ketika nilai properti yang valid ditentukan oleh daftar nilai floating-point.

ValidVal.ListFloat.cNumList

Jumlah elemen dalam array nilai valid yang titik pList-nya .

ValidVal.ListFloat.Nom

Nilai nominal properti.

ValidVal.ListFloat.pList

Array nilai yang valid, properti dapat diatur ke.

ValidVal.ListGuid

Struktur yang diisi saat nilai valid properti ditentukan oleh daftar GUID.

ValidVal.ListGuid.cNumList

Jumlah elemen dalam array nilai valid yang titik pList-nya .

ValidVal.ListGuid.Nom

Nilai nominal properti.

ValidVal.ListGuid.pList

Array nilai yang valid, properti dapat diatur ke.

ValidVal.ListBStr

Struktur yang diisi saat nilai valid properti ditentukan oleh daftar string.

ValidVal.ListBStr.cNumList

Jumlah elemen dalam array nilai valid yang titik pList-nya .

ValidVal.ListBStr.Nom

Nilai nominal properti.

ValidVal.ListBStr.pList

Array nilai yang valid, properti dapat diatur ke.

ValidVal.Flag

Struktur yang diisi ketika nilai valid properti ditentukan oleh bitset bendera.

ValidVal.Flag.Nom

Nilai nominal properti.

ValidVal.Flag.ValidBits

Masker yang menunjukkan nilai bit mana yang dapat diatur. Anggota ini harus menjadi bitwise ATAU dari semua kemungkinan nilai bendera yang ditentukan pengguna.

ValidVal.None

Struktur yang diisi saat nilai properti yang valid tidak diberikan dalam daftar, rentang, atau bitset. Struktur ini berisi anggota bernama Dummy, yang menunjukkan properti berjenis NONE.

ValidVal.None.Dummy

Keterangan

WIA_PROPERTY_INFO digunakan oleh minidriver untuk menyimpan informasi tentang properti jenis arbitrer. Struktur ini juga digunakan oleh wiasSetItemPropAttribs untuk mengatur nilai properti yang valid. Anggota lAccessFlags mengontrol apakah akses ke properti bersifat baca-saja atau baca/tulis. Anggota ini juga menyampaikan informasi tentang kumpulan nilai yang valid untuk properti saat ditentukan oleh daftar nilai, rentang nilai, atau bitset bendera. Anggota vt berisi informasi tentang jenis properti . Kedua anggota harus digunakan untuk menentukan anggota ValidValunion mana yang dapat diakses.

Misalnya, untuk properti baca/tulis dari jenis panjang, yang nilai validnya adalah bilangan bulat dalam rentang -128 hingga 127, dan yang nilai nominalnya adalah 0, lAccessFlags akan diatur ke WIA_PROP_RW | WIA_PROP_RANGE, dan vt akan diatur ke VT_I4. Range.Min akan diatur ke -128, Range.Max akan diatur ke 127, dan Range.Inc akan diatur ke 1. Range.Nom akan diatur ke 0.

Untuk properti berbeda yang nilai validnya ditentukan oleh daftar tiga nilai GUID, lAccessFlags akan memiliki set bit WIA_PROP_LIST, dan vt akan diatur ke VT_CLSID. ListGuid.cNumList akan diatur ke 3, dan tiga GUID adalah ListGuid.pList[0], ListGuid.pList[1], dan ListGuid.pList[2].

Properti yang nilai validnya ditentukan oleh bitset nilai 0x01, 0x02, 0x04, dan 0x08 akan memiliki bit WIA_PROP_FLAG yang diatur dalam lAccessFlags, dan vt akan diatur ke VT_UI4. Untuk properti seperti itu, nilai yang disimpan di Flag.ValidBits akan 0x0F, bitwise OR dari empat nilai bendera yang disebutkan sebelumnya.

Contoh berikut menunjukkan cara menggunakan data array dengan WIA_PROPERTY_INFO dan cara memanggil wiasWriteMultiple untuk mengatur nilai properti Anda.

Inisialisasi mungkin terlihat seperti contoh berikut:

// Initialize WIA_IPA_ITEM_TIME (NONE)
  g_pszItemDefaults[13]              = WIA_IPA_ITEM_TIME_STR;
  g_piItemDefaults [13]              = WIA_IPA_ITEM_TIME;
  g_pvItemDefaults [13].cai.celems   = MyNumberOfElements;
  g_pvItemDefaults [13].cai.pelems   = PointerToMyArray;
  g_pvItemDefaults [13].vt           = VT_VECTOR|VT_UI2; // MyArray is an array of DWORD values
  g_psItemDefaults [13].ulKind       = PRSPEC_PROPID;
  g_psItemDefaults [13].propid       = g_piItemDefaults [13];
  g_wpiItemDefaults[13].lAccessFlags = WIA_PROP_READ|WIA_PROP_NONE;
  g_wpiItemDefaults[13].vt           = g_pvItemDefaults [13].vt;

Pada durasi, mengubah nilai dengan wiasWriteMultiple mungkin terlihat seperti contoh berikut:

PROPVARIANT propVar;
PROPSPEC    propSpec;
PropVariantInit(&propVar);
propVar.vt          = VT_VECTOR | VT_UI2;
propVar.caui.cElems = sizeof(SYSTEMTIME) / sizeof(WORD);
propVar.caui.pElems = (WORD *) &CurrentTimeStruct;
propSpec.ulKind     = PRSPEC_PROPID;
propSpec.propid     = WIA_IPA_ITEM_TIME;
hr                  = wiasWriteMultiple(pWiasContext, 1, &propSpec, &propVar);

WIA menggunakan jenis COM PROPVARIANT , VARIAN, sehingga defaultnya adalah VT_VECTOR, dan tidak VT_ARRAY (yang juga didukung).

Persyaratan

Persyaratan Nilai
Header wiamindr_lh.h (termasuk Wiamindr.h)

Lihat juga

wiasSetItemPropAttribs