Win32 API 日本語リファレンス
ホームDevices.ImageAcquisition › WIA_EXTENDED_TRANSFER_INFO

WIA_EXTENDED_TRANSFER_INFO

構造体
サイズx64: 20 バイト / x86: 20 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
ulSizeDWORD4+0+0この構造体のサイズ。
ulMinBufferSizeDWORD4+4+4アプリケーションが IWiaDataTransfer::idtGetBandedData の呼び出しで要求すべき最小のバッファーサイズ。
ulOptimalBufferSizeDWORD4+8+8アプリケーションが IWiaDataTransfer::idtGetBandedData の呼び出しで要求すべき、ドライバーが推奨するバッファーサイズ。
ulMaxBufferSizeDWORD4+12+12アプリケーションが IWiaDataTransfer::idtGetBandedData の呼び出しで要求できる、ドライバーが推奨する最大のバッファーサイズ。この上限を超えても支障はありませんが、その場合ドライバーはバッファー全体を使用せず、データの各バンドをこの最大サイズに制限することがあります。
ulNumBuffersDWORD4+16+16この値は使用されないため、無視してください。

公式ドキュメント

WIA_EXTENDED_TRANSFER_INFO 構造体は、IWiaDataTransfer::idtGetExtendedTransferInfo メソッド用の拡張転送情報を指定します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// WIA_EXTENDED_TRANSFER_INFO  (x64 20 / x86 20 バイト)
typedef struct WIA_EXTENDED_TRANSFER_INFO {
    DWORD ulSize;
    DWORD ulMinBufferSize;
    DWORD ulOptimalBufferSize;
    DWORD ulMaxBufferSize;
    DWORD ulNumBuffers;
} WIA_EXTENDED_TRANSFER_INFO;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WIA_EXTENDED_TRANSFER_INFO
{
    public uint ulSize;
    public uint ulMinBufferSize;
    public uint ulOptimalBufferSize;
    public uint ulMaxBufferSize;
    public uint ulNumBuffers;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure WIA_EXTENDED_TRANSFER_INFO
    Public ulSize As UInteger
    Public ulMinBufferSize As UInteger
    Public ulOptimalBufferSize As UInteger
    Public ulMaxBufferSize As UInteger
    Public ulNumBuffers As UInteger
End Structure
import ctypes
from ctypes import wintypes

class WIA_EXTENDED_TRANSFER_INFO(ctypes.Structure):
    _fields_ = [
        ("ulSize", wintypes.DWORD),
        ("ulMinBufferSize", wintypes.DWORD),
        ("ulOptimalBufferSize", wintypes.DWORD),
        ("ulMaxBufferSize", wintypes.DWORD),
        ("ulNumBuffers", wintypes.DWORD),
    ]
#[repr(C)]
pub struct WIA_EXTENDED_TRANSFER_INFO {
    pub ulSize: u32,
    pub ulMinBufferSize: u32,
    pub ulOptimalBufferSize: u32,
    pub ulMaxBufferSize: u32,
    pub ulNumBuffers: u32,
}
import "golang.org/x/sys/windows"

type WIA_EXTENDED_TRANSFER_INFO struct {
	ulSize uint32
	ulMinBufferSize uint32
	ulOptimalBufferSize uint32
	ulMaxBufferSize uint32
	ulNumBuffers uint32
}
type
  WIA_EXTENDED_TRANSFER_INFO = record
    ulSize: DWORD;
    ulMinBufferSize: DWORD;
    ulOptimalBufferSize: DWORD;
    ulMaxBufferSize: DWORD;
    ulNumBuffers: DWORD;
  end;
const WIA_EXTENDED_TRANSFER_INFO = extern struct {
    ulSize: u32,
    ulMinBufferSize: u32,
    ulOptimalBufferSize: u32,
    ulMaxBufferSize: u32,
    ulNumBuffers: u32,
};
type
  WIA_EXTENDED_TRANSFER_INFO {.bycopy.} = object
    ulSize: uint32
    ulMinBufferSize: uint32
    ulOptimalBufferSize: uint32
    ulMaxBufferSize: uint32
    ulNumBuffers: uint32
struct WIA_EXTENDED_TRANSFER_INFO
{
    uint ulSize;
    uint ulMinBufferSize;
    uint ulOptimalBufferSize;
    uint ulMaxBufferSize;
    uint ulNumBuffers;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; WIA_EXTENDED_TRANSFER_INFO サイズ: 20 バイト(x64)
dim st, 5    ; 4byte整数×5(構造体サイズ 20 / 4 切り上げ)
; ulSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; ulMinBufferSize : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; ulOptimalBufferSize : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; ulMaxBufferSize : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; ulNumBuffers : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global WIA_EXTENDED_TRANSFER_INFO
    #field int ulSize
    #field int ulMinBufferSize
    #field int ulOptimalBufferSize
    #field int ulMaxBufferSize
    #field int ulNumBuffers
#endstruct

stdim st, WIA_EXTENDED_TRANSFER_INFO        ; NSTRUCT 変数を確保
st->ulSize = 100
mes "ulSize=" + st->ulSize