Win32 API 日本語リファレンス
ホームSecurity.Credentials › SCARD_T0_COMMAND

SCARD_T0_COMMAND

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

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

フィールド

フィールドサイズx64x86説明
bClaBYTE1+0+0APDUのクラスバイト(CLA)。
bInsBYTE1+1+1APDUの命令バイト(INS)。
bP1BYTE1+2+2APDUのパラメーター1(P1)。
bP2BYTE1+3+3APDUのパラメーター2(P2)。
bP3BYTE1+4+4APDUのパラメーター3(P3、データ長)。

各言語での定義

#include <windows.h>

// SCARD_T0_COMMAND  (x64 5 / x86 5 バイト)
typedef struct SCARD_T0_COMMAND {
    BYTE bCla;
    BYTE bIns;
    BYTE bP1;
    BYTE bP2;
    BYTE bP3;
} SCARD_T0_COMMAND;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct SCARD_T0_COMMAND
{
    public byte bCla;
    public byte bIns;
    public byte bP1;
    public byte bP2;
    public byte bP3;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure SCARD_T0_COMMAND
    Public bCla As Byte
    Public bIns As Byte
    Public bP1 As Byte
    Public bP2 As Byte
    Public bP3 As Byte
End Structure
import ctypes
from ctypes import wintypes

class SCARD_T0_COMMAND(ctypes.Structure):
    _fields_ = [
        ("bCla", ctypes.c_ubyte),
        ("bIns", ctypes.c_ubyte),
        ("bP1", ctypes.c_ubyte),
        ("bP2", ctypes.c_ubyte),
        ("bP3", ctypes.c_ubyte),
    ]
#[repr(C)]
pub struct SCARD_T0_COMMAND {
    pub bCla: u8,
    pub bIns: u8,
    pub bP1: u8,
    pub bP2: u8,
    pub bP3: u8,
}
import "golang.org/x/sys/windows"

type SCARD_T0_COMMAND struct {
	bCla byte
	bIns byte
	bP1 byte
	bP2 byte
	bP3 byte
}
type
  SCARD_T0_COMMAND = record
    bCla: Byte;
    bIns: Byte;
    bP1: Byte;
    bP2: Byte;
    bP3: Byte;
  end;
const SCARD_T0_COMMAND = extern struct {
    bCla: u8,
    bIns: u8,
    bP1: u8,
    bP2: u8,
    bP3: u8,
};
type
  SCARD_T0_COMMAND {.bycopy.} = object
    bCla: uint8
    bIns: uint8
    bP1: uint8
    bP2: uint8
    bP3: uint8
struct SCARD_T0_COMMAND
{
    ubyte bCla;
    ubyte bIns;
    ubyte bP1;
    ubyte bP2;
    ubyte bP3;
}

HSP用 定義

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

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

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