次の方法で共有


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

プロパティの有効な値が浮動小数点値の範囲で指定され、プロパティ型が float または 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

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

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 の値のビットセットによって定義されているプロパティでは、WIA_PROP_FLAG ビットが lAccessFlags に設定され、 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 PROPVARIANTVARIANT が使用されるため、既定値はVT_VECTORであり、VT_ARRAY (これもサポートされています) ではありません。

要件

要件
Header wiamindr_lh.h (Wiamindr.h を含む)

こちらもご覧ください

wiasSetItemPropAttribs