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転送に必要な最小バッファーサイズ。
ulOptimalBufferSizeDWORD4+8+8転送に最適なバッファーサイズ。
ulMaxBufferSizeDWORD4+12+12転送に使用可能な最大バッファーサイズ。
ulNumBuffersDWORD4+16+16使用するバッファーの数。

各言語での定義

#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