次の方法で共有


WIA_PROPERTY_INFO構造体 (wiamindr_lh.h)

WIA_PROPERTY_INFO 構造体は、任意の型の項目プロパティの既定のアクセスと有効な値情報を格納するために使用されます。

構文

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;

メンバーズ

lAccessFlags

プロパティのアクセスおよびプロパティ属性フラグを指定します。 詳細については、「プロパティ属性の 」を参照してください。

vt

プロパティのバリアント データ型を指定します。 このメンバー (次のいずれか) は、ValidValunion の有効な構造体メンバーを制御します。

  • VT_UI1

  • VT_UI2

  • VT_UI4

  • VT_I2

  • VT_I4

  • VT_R4

  • VT_R8

  • VT_CLSID

  • VT_BSTR

詳細については、「PROPVARIANT 参照してください。

ValidVal

ValidVal.Range

プロパティの有効な値が整数値の範囲で指定されたときに塗りつぶされる構造体。

ValidVal.Range.Min

プロパティの最小値。

ValidVal.Range.Nom

プロパティの名目値。

ValidVal.Range.Max

プロパティの最大値。

ValidVal.Range.Inc

使用できる増分値。

ValidVal.RangeFloat

プロパティの有効な値が浮動小数点値の範囲で指定され、プロパティ型が 浮動小数点 または double 場合に塗りつぶされる構造体。

ValidVal.RangeFloat.Min

プロパティの最小値。

ValidVal.RangeFloat.Nom

プロパティの名目値。

ValidVal.RangeFloat.Max

プロパティの最大値。

ValidVal.RangeFloat.Inc

使用できる増分値。

ValidVal.List

プロパティの有効な値が整数値の一覧で指定されたときに塗りつぶされる構造体。

ValidVal.List.cNumList

pList ポイントを する有効な値の配列内の要素の数。

ValidVal.List.Nom

プロパティの名目値。

ValidVal.List.pList

プロパティを設定できる有効な値の配列。

ValidVal.ListFloat

プロパティの有効な値が浮動小数点値のリストによって指定されたときに塗りつぶされる構造体。

ValidVal.ListFloat.cNumList

pList ポイントを する有効な値の配列内の要素の数。

ValidVal.ListFloat.Nom

プロパティの名目値。

ValidVal.ListFloat.pList

プロパティを設定できる有効な値の配列。

ValidVal.ListGuid

プロパティの有効な値が GUID の一覧で指定されたときに塗りつぶされる構造体。

ValidVal.ListGuid.cNumList

pList ポイントを する有効な値の配列内の要素の数。

ValidVal.ListGuid.Nom

プロパティの名目値。

ValidVal.ListGuid.pList

プロパティを設定できる有効な値の配列。

ValidVal.ListBStr

プロパティの有効な値が文字列の一覧で指定されたときに塗りつぶされる構造体。

ValidVal.ListBStr.cNumList

pList ポイントを する有効な値の配列内の要素の数。

ValidVal.ListBStr.Nom

プロパティの名目値。

ValidVal.ListBStr.pList

プロパティを設定できる有効な値の配列。

ValidVal.Flag

プロパティの有効な値がフラグのビットセットによって指定されたときに塗りつぶされる構造体。

ValidVal.Flag.Nom

プロパティの名目値。

ValidVal.Flag.ValidBits

設定できるビット値を示すマスク。 このメンバーは、使用可能なすべてのユーザー定義フラグ値のビットごとの OR である必要があります。

ValidVal.None

プロパティの有効な値がリスト、範囲、またはビットセットに指定されていない場合に塗りつぶされる構造体。 この構造体には、プロパティ NONE 型であることを示す Dummyという名前のメンバーが含まれています。

ValidVal.None.Dummy

備考

WIA_PROPERTY_INFO は、任意の種類のプロパティに関する情報を格納するためにミニドライバーによって使用されます。 この構造体は、プロパティの有効な値を設定するために、wiasSetItemPropAttribs でも使用されます。 lAccessFlags メンバーは、プロパティへのアクセスが読み取り専用か読み取り/書き込みかを制御します。 このメンバーは、値のリスト、値の範囲、またはフラグのビットセットによってプロパティが定義されている場合に、プロパティの有効な値のセットに関する情報も伝達します。 vt メンバーには、プロパティの型に関する情報が含まれています。 両方のメンバーを使用して、ValidValunion のどのメンバーにアクセスできるかを判断する必要があります。

たとえば、long 型の読み取り/書き込みプロパティの場合、有効な値は -128 ~ 127 の範囲の整数で、名目値が 0 の 場合、lAccessFlags は WIA_PROP_RW |WIA_PROP_RANGE、vt は VT_I4 に設定されます。 Range.Min は -128 に、Range.Max は 127 に、Range.Inc は 1 に設定されます。 Range.Nom は 0 に設定されます。

有効な値が 3 つの GUID 値のリストによって定義されている別のプロパティの場合、lAccessFlags はWIA_PROP_LIST ビットが設定され、vt VT_CLSIDに設定されます。 ListGuid.cNumList は 3 に設定され、3 つの GUID は ListGuid.pList [0]、ListGuid.pList[1]、および ListGuid.pList[2]されます。

有効な値が0x01、0x02、0x04、および0x08のビットセットによって定義されているプロパティは、lAccessFlagsでWIA_PROP_FLAG ビットを設定し、vt VT_UI4に設定します。 このようなプロパティの場合、Flag.ValidBits に格納される値は、前述の 4 つのフラグ値のビットごとの OR 0x0Fされます。

次の例では、WIA_PROPERTY_INFOで配列データを使用する方法と、wiasWriteMultiple 呼び出してプロパティ値を設定する方法を示します。

初期化は次の例のようになります。

// 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;

実行時に、wiasWriteMultiple を使用して値を変更すると、次の例のようになります。

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 は COM PROPVARIANT 型 (VARIANT ) を使用するため、既定値はVT_VECTORであり、VT_ARRAYではありません (これもサポートされています)。

必要条件

要件 価値
ヘッダー wiamindr_lh.h (Wiamindr.h を含む)

関連項目

wiasSetItemPropAttribs する