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