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

WINBIO_ENGINE_INTERFACE

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

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

フィールド

フィールドサイズx64x86説明
VersionWINBIO_ADAPTER_INTERFACE_VERSION4+0+0

この構造体のバージョン番号です。

Windows 10: バージョン番号は WINBIO_ENGINE_INTERFACE_VERSION_3 または WINBIO_ENGINE_INTERFACE_VERSION_4 でなければなりません。WINBIO_ENGINE_INTERFACE_VERSION_4 の実装の詳細については、Sensor requirements for secure biometrics を参照してください。

Windows Server 2012 R2、Windows 8.1、Windows Server 2012 および Windows 8: バージョン番号は WINBIO_ENGINE_INTERFACE_VERSION_2 でなければなりません。

Windows Server 2008 R2 および Windows 7: バージョン番号は WINBIO_ENGINE_INTERFACE_VERSION_1 でなければなりません。

TypeDWORD4+4+4アダプターの種類です。これは WINBIO_ADAPTER_TYPE_ENGINE でなければなりません。
SizeUINT_PTR8/4+8+8この構造体のサイズ (バイト単位) です。この値には WINBIO_ENGINE_INTERFACE 構造体のサイズを設定します。
AdapterIdGUID16+16+12エンジンアダプターを一意に識別する GUID です。この値は開発者が生成する必要があります。
AttachPIBIO_ENGINE_ATTACH_FN8/4+32+28EngineAdapterAttach 関数の実装へのポインターです。
DetachPIBIO_ENGINE_DETACH_FN8/4+40+32EngineAdapterDetach 関数の実装へのポインターです。
ClearContextPIBIO_ENGINE_CLEAR_CONTEXT_FN8/4+48+36EngineAdapterClearContext 関数の実装へのポインターです。
QueryPreferredFormatPIBIO_ENGINE_QUERY_PREFERRED_FORMAT_FN8/4+56+40EngineAdapterQueryPreferredFormat 関数の実装へのポインターです。
QueryIndexVectorSizePIBIO_ENGINE_QUERY_INDEX_VECTOR_SIZE_FN8/4+64+44EngineAdapterQueryIndexVectorSize 関数の実装へのポインターです。
QueryHashAlgorithmsPIBIO_ENGINE_QUERY_HASH_ALGORITHMS_FN8/4+72+48EngineAdapterQueryHashAlgorithms 関数の実装へのポインターです。
SetHashAlgorithmPIBIO_ENGINE_SET_HASH_ALGORITHM_FN8/4+80+52EngineAdapterSetHashAlgorithm 関数の実装へのポインターです。
QuerySampleHintPIBIO_ENGINE_QUERY_SAMPLE_HINT_FN8/4+88+56EngineAdapterQuerySampleHint 関数の実装へのポインターです。
AcceptSampleDataPIBIO_ENGINE_ACCEPT_SAMPLE_DATA_FN8/4+96+60EngineAdapterAcceptSampleData 関数の実装へのポインターです。
ExportEngineDataPIBIO_ENGINE_EXPORT_ENGINE_DATA_FN8/4+104+64EngineAdapterExportEngineData 関数の実装へのポインターです。
VerifyFeatureSetPIBIO_ENGINE_VERIFY_FEATURE_SET_FN8/4+112+68EngineAdapterVerifyFeatureSet 関数の実装へのポインターです。
IdentifyFeatureSetPIBIO_ENGINE_IDENTIFY_FEATURE_SET_FN8/4+120+72EngineAdapterIdentifyFeatureSet 関数の実装へのポインターです。
CreateEnrollmentPIBIO_ENGINE_CREATE_ENROLLMENT_FN8/4+128+76EngineAdapterCreateEnrollment 関数の実装へのポインターです。
UpdateEnrollmentPIBIO_ENGINE_UPDATE_ENROLLMENT_FN8/4+136+80EngineAdapterUpdateEnrollment 関数の実装へのポインターです。
GetEnrollmentStatusPIBIO_ENGINE_GET_ENROLLMENT_STATUS_FN8/4+144+84EngineAdapterGetEnrollmentStatus 関数の実装へのポインターです。
GetEnrollmentHashPIBIO_ENGINE_GET_ENROLLMENT_HASH_FN8/4+152+88EngineAdapterGetEnrollmentHash 関数の実装へのポインターです。
CheckForDuplicatePIBIO_ENGINE_CHECK_FOR_DUPLICATE_FN8/4+160+92EngineAdapterCheckForDuplicate 関数の実装へのポインターです。
CommitEnrollmentPIBIO_ENGINE_COMMIT_ENROLLMENT_FN8/4+168+96EngineAdapterCommitEnrollment 関数の実装へのポインターです。
DiscardEnrollmentPIBIO_ENGINE_DISCARD_ENROLLMENT_FN8/4+176+100EngineAdapterDiscardEnrollment 関数の実装へのポインターです。
ControlUnitPIBIO_ENGINE_CONTROL_UNIT_FN8/4+184+104EngineAdapterControlUnit 関数の実装へのポインターです。
ControlUnitPrivilegedPIBIO_ENGINE_CONTROL_UNIT_PRIVILEGED_FN8/4+192+108EngineAdapterControlUnitPrivileged 関数の実装へのポインターです。
NotifyPowerChangePIBIO_ENGINE_NOTIFY_POWER_CHANGE_FN8/4+200+112EngineAdapterNotifyPowerChange 関数の実装へのポインターです。このメンバーは Windows 8 以降でサポートされます。
Reserved_1PIBIO_ENGINE_RESERVED_1_FN8/4+208+116このフィールドは予約済みであり、NULL を設定してください。
PipelineInitPIBIO_ENGINE_PIPELINE_INIT_FN8/4+216+120EngineAdapterPipelineInit 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。
PipelineCleanupPIBIO_ENGINE_PIPELINE_CLEANUP_FN8/4+224+124EngineAdapterPipelineCleanup 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。
ActivatePIBIO_ENGINE_ACTIVATE_FN8/4+232+128EngineAdapterActivate 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。
DeactivatePIBIO_ENGINE_DEACTIVATE_FN8/4+240+132EngineAdapterDeactivate 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。
QueryExtendedInfoPIBIO_ENGINE_QUERY_EXTENDED_INFO_FN8/4+248+136EngineAdapterQueryExtendedInfo 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。
IdentifyAllPIBIO_ENGINE_IDENTIFY_ALL_FN8/4+256+140EngineAdapterIdentifyAll 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。
SetEnrollmentSelectorPIBIO_ENGINE_SET_ENROLLMENT_SELECTOR_FN8/4+264+144EngineAdapterSetEnrollmentSelector 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。
SetEnrollmentParametersPIBIO_ENGINE_SET_ENROLLMENT_PARAMETERS_FN8/4+272+148EngineAdapterSetEnrollmentParameters 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。
QueryExtendedEnrollmentStatusPIBIO_ENGINE_QUERY_EXTENDED_ENROLLMENT_STATUS_FN8/4+280+152EngineAdapterQueryExtendedEnrollmentStatus 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。
RefreshCachePIBIO_ENGINE_REFRESH_CACHE_FN8/4+288+156EngineAdapterRefreshCache 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。
SelectCalibrationFormatPIBIO_ENGINE_SELECT_CALIBRATION_FORMAT_FN8/4+296+160EngineAdapterSelectCalibrationFormat 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。
QueryCalibrationDataPIBIO_ENGINE_QUERY_CALIBRATION_DATA_FN8/4+304+164EngineAdapterQueryCalibrationData 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。
SetAccountPolicyPIBIO_ENGINE_SET_ACCOUNT_POLICY_FN8/4+312+168EngineAdapterSetAccountPolicy 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。
CreateKeyPIBIO_ENGINE_CREATE_KEY_FN8/4+320+172EngineAdapterCreateKey 関数の実装へのポインターです。このメンバーは Windows 10 バージョン 1607 以降でサポートされます。
IdentifyFeatureSetSecurePIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN8/4+328+176EngineAdapterIdentifyFeatureSetSecure 関数の実装へのポインターです。このメンバーは Windows 10 バージョン 1607 以降でサポートされます。
AcceptPrivateSensorTypeInfoPIBIO_ENGINE_ACCEPT_PRIVATE_SENSOR_TYPE_INFO_FN8/4+336+180プライベートセンサ種別情報を受け取る関数ポインタ。
CreateEnrollmentAuthenticatedPIBIO_ENGINE_CREATE_ENROLLMENT_AUTHENTICATED_FN8/4+344+184認証付きで新規登録を作成する関数ポインタ。
IdentifyFeatureSetAuthenticatedPIBIO_ENGINE_IDENTIFY_FEATURE_SET_AUTHENTICATED_FN8/4+352+188認証付きで特徴量の識別を行う関数ポインタ。

公式ドキュメント

WINBIO_ENGINE_INTERFACE 構造体は、カスタムエンジンアダプター関数へのポインターを保持します。Windows Biometric Framework は、この構造体を使用してそれらの関数を特定します。

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

各言語での定義

#include <windows.h>

// WINBIO_ADAPTER_INTERFACE_VERSION  (x64 4 / x86 4 バイト)
typedef struct WINBIO_ADAPTER_INTERFACE_VERSION {
    WORD MajorVersion;
    WORD MinorVersion;
} WINBIO_ADAPTER_INTERFACE_VERSION;

// WINBIO_ENGINE_INTERFACE  (x64 360 / x86 192 バイト)
typedef struct WINBIO_ENGINE_INTERFACE {
    WINBIO_ADAPTER_INTERFACE_VERSION Version;
    DWORD Type;
    UINT_PTR Size;
    GUID AdapterId;
    PIBIO_ENGINE_ATTACH_FN Attach;
    PIBIO_ENGINE_DETACH_FN Detach;
    PIBIO_ENGINE_CLEAR_CONTEXT_FN ClearContext;
    PIBIO_ENGINE_QUERY_PREFERRED_FORMAT_FN QueryPreferredFormat;
    PIBIO_ENGINE_QUERY_INDEX_VECTOR_SIZE_FN QueryIndexVectorSize;
    PIBIO_ENGINE_QUERY_HASH_ALGORITHMS_FN QueryHashAlgorithms;
    PIBIO_ENGINE_SET_HASH_ALGORITHM_FN SetHashAlgorithm;
    PIBIO_ENGINE_QUERY_SAMPLE_HINT_FN QuerySampleHint;
    PIBIO_ENGINE_ACCEPT_SAMPLE_DATA_FN AcceptSampleData;
    PIBIO_ENGINE_EXPORT_ENGINE_DATA_FN ExportEngineData;
    PIBIO_ENGINE_VERIFY_FEATURE_SET_FN VerifyFeatureSet;
    PIBIO_ENGINE_IDENTIFY_FEATURE_SET_FN IdentifyFeatureSet;
    PIBIO_ENGINE_CREATE_ENROLLMENT_FN CreateEnrollment;
    PIBIO_ENGINE_UPDATE_ENROLLMENT_FN UpdateEnrollment;
    PIBIO_ENGINE_GET_ENROLLMENT_STATUS_FN GetEnrollmentStatus;
    PIBIO_ENGINE_GET_ENROLLMENT_HASH_FN GetEnrollmentHash;
    PIBIO_ENGINE_CHECK_FOR_DUPLICATE_FN CheckForDuplicate;
    PIBIO_ENGINE_COMMIT_ENROLLMENT_FN CommitEnrollment;
    PIBIO_ENGINE_DISCARD_ENROLLMENT_FN DiscardEnrollment;
    PIBIO_ENGINE_CONTROL_UNIT_FN ControlUnit;
    PIBIO_ENGINE_CONTROL_UNIT_PRIVILEGED_FN ControlUnitPrivileged;
    PIBIO_ENGINE_NOTIFY_POWER_CHANGE_FN NotifyPowerChange;
    PIBIO_ENGINE_RESERVED_1_FN Reserved_1;
    PIBIO_ENGINE_PIPELINE_INIT_FN PipelineInit;
    PIBIO_ENGINE_PIPELINE_CLEANUP_FN PipelineCleanup;
    PIBIO_ENGINE_ACTIVATE_FN Activate;
    PIBIO_ENGINE_DEACTIVATE_FN Deactivate;
    PIBIO_ENGINE_QUERY_EXTENDED_INFO_FN QueryExtendedInfo;
    PIBIO_ENGINE_IDENTIFY_ALL_FN IdentifyAll;
    PIBIO_ENGINE_SET_ENROLLMENT_SELECTOR_FN SetEnrollmentSelector;
    PIBIO_ENGINE_SET_ENROLLMENT_PARAMETERS_FN SetEnrollmentParameters;
    PIBIO_ENGINE_QUERY_EXTENDED_ENROLLMENT_STATUS_FN QueryExtendedEnrollmentStatus;
    PIBIO_ENGINE_REFRESH_CACHE_FN RefreshCache;
    PIBIO_ENGINE_SELECT_CALIBRATION_FORMAT_FN SelectCalibrationFormat;
    PIBIO_ENGINE_QUERY_CALIBRATION_DATA_FN QueryCalibrationData;
    PIBIO_ENGINE_SET_ACCOUNT_POLICY_FN SetAccountPolicy;
    PIBIO_ENGINE_CREATE_KEY_FN CreateKey;
    PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN IdentifyFeatureSetSecure;
    PIBIO_ENGINE_ACCEPT_PRIVATE_SENSOR_TYPE_INFO_FN AcceptPrivateSensorTypeInfo;
    PIBIO_ENGINE_CREATE_ENROLLMENT_AUTHENTICATED_FN CreateEnrollmentAuthenticated;
    PIBIO_ENGINE_IDENTIFY_FEATURE_SET_AUTHENTICATED_FN IdentifyFeatureSetAuthenticated;
} WINBIO_ENGINE_INTERFACE;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WINBIO_ADAPTER_INTERFACE_VERSION
{
    public ushort MajorVersion;
    public ushort MinorVersion;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WINBIO_ENGINE_INTERFACE
{
    public WINBIO_ADAPTER_INTERFACE_VERSION Version;
    public uint Type;
    public UIntPtr Size;
    public Guid AdapterId;
    public IntPtr Attach;
    public IntPtr Detach;
    public IntPtr ClearContext;
    public IntPtr QueryPreferredFormat;
    public IntPtr QueryIndexVectorSize;
    public IntPtr QueryHashAlgorithms;
    public IntPtr SetHashAlgorithm;
    public IntPtr QuerySampleHint;
    public IntPtr AcceptSampleData;
    public IntPtr ExportEngineData;
    public IntPtr VerifyFeatureSet;
    public IntPtr IdentifyFeatureSet;
    public IntPtr CreateEnrollment;
    public IntPtr UpdateEnrollment;
    public IntPtr GetEnrollmentStatus;
    public IntPtr GetEnrollmentHash;
    public IntPtr CheckForDuplicate;
    public IntPtr CommitEnrollment;
    public IntPtr DiscardEnrollment;
    public IntPtr ControlUnit;
    public IntPtr ControlUnitPrivileged;
    public IntPtr NotifyPowerChange;
    public IntPtr Reserved_1;
    public IntPtr PipelineInit;
    public IntPtr PipelineCleanup;
    public IntPtr Activate;
    public IntPtr Deactivate;
    public IntPtr QueryExtendedInfo;
    public IntPtr IdentifyAll;
    public IntPtr SetEnrollmentSelector;
    public IntPtr SetEnrollmentParameters;
    public IntPtr QueryExtendedEnrollmentStatus;
    public IntPtr RefreshCache;
    public IntPtr SelectCalibrationFormat;
    public IntPtr QueryCalibrationData;
    public IntPtr SetAccountPolicy;
    public IntPtr CreateKey;
    public IntPtr IdentifyFeatureSetSecure;
    public IntPtr AcceptPrivateSensorTypeInfo;
    public IntPtr CreateEnrollmentAuthenticated;
    public IntPtr IdentifyFeatureSetAuthenticated;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure WINBIO_ADAPTER_INTERFACE_VERSION
    Public MajorVersion As UShort
    Public MinorVersion As UShort
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure WINBIO_ENGINE_INTERFACE
    Public Version As WINBIO_ADAPTER_INTERFACE_VERSION
    Public Type As UInteger
    Public Size As UIntPtr
    Public AdapterId As Guid
    Public Attach As IntPtr
    Public Detach As IntPtr
    Public ClearContext As IntPtr
    Public QueryPreferredFormat As IntPtr
    Public QueryIndexVectorSize As IntPtr
    Public QueryHashAlgorithms As IntPtr
    Public SetHashAlgorithm As IntPtr
    Public QuerySampleHint As IntPtr
    Public AcceptSampleData As IntPtr
    Public ExportEngineData As IntPtr
    Public VerifyFeatureSet As IntPtr
    Public IdentifyFeatureSet As IntPtr
    Public CreateEnrollment As IntPtr
    Public UpdateEnrollment As IntPtr
    Public GetEnrollmentStatus As IntPtr
    Public GetEnrollmentHash As IntPtr
    Public CheckForDuplicate As IntPtr
    Public CommitEnrollment As IntPtr
    Public DiscardEnrollment As IntPtr
    Public ControlUnit As IntPtr
    Public ControlUnitPrivileged As IntPtr
    Public NotifyPowerChange As IntPtr
    Public Reserved_1 As IntPtr
    Public PipelineInit As IntPtr
    Public PipelineCleanup As IntPtr
    Public Activate As IntPtr
    Public Deactivate As IntPtr
    Public QueryExtendedInfo As IntPtr
    Public IdentifyAll As IntPtr
    Public SetEnrollmentSelector As IntPtr
    Public SetEnrollmentParameters As IntPtr
    Public QueryExtendedEnrollmentStatus As IntPtr
    Public RefreshCache As IntPtr
    Public SelectCalibrationFormat As IntPtr
    Public QueryCalibrationData As IntPtr
    Public SetAccountPolicy As IntPtr
    Public CreateKey As IntPtr
    Public IdentifyFeatureSetSecure As IntPtr
    Public AcceptPrivateSensorTypeInfo As IntPtr
    Public CreateEnrollmentAuthenticated As IntPtr
    Public IdentifyFeatureSetAuthenticated As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class WINBIO_ADAPTER_INTERFACE_VERSION(ctypes.Structure):
    _fields_ = [
        ("MajorVersion", ctypes.c_ushort),
        ("MinorVersion", ctypes.c_ushort),
    ]

class WINBIO_ENGINE_INTERFACE(ctypes.Structure):
    _fields_ = [
        ("Version", WINBIO_ADAPTER_INTERFACE_VERSION),
        ("Type", wintypes.DWORD),
        ("Size", ctypes.c_size_t),
        ("AdapterId", GUID),
        ("Attach", ctypes.c_void_p),
        ("Detach", ctypes.c_void_p),
        ("ClearContext", ctypes.c_void_p),
        ("QueryPreferredFormat", ctypes.c_void_p),
        ("QueryIndexVectorSize", ctypes.c_void_p),
        ("QueryHashAlgorithms", ctypes.c_void_p),
        ("SetHashAlgorithm", ctypes.c_void_p),
        ("QuerySampleHint", ctypes.c_void_p),
        ("AcceptSampleData", ctypes.c_void_p),
        ("ExportEngineData", ctypes.c_void_p),
        ("VerifyFeatureSet", ctypes.c_void_p),
        ("IdentifyFeatureSet", ctypes.c_void_p),
        ("CreateEnrollment", ctypes.c_void_p),
        ("UpdateEnrollment", ctypes.c_void_p),
        ("GetEnrollmentStatus", ctypes.c_void_p),
        ("GetEnrollmentHash", ctypes.c_void_p),
        ("CheckForDuplicate", ctypes.c_void_p),
        ("CommitEnrollment", ctypes.c_void_p),
        ("DiscardEnrollment", ctypes.c_void_p),
        ("ControlUnit", ctypes.c_void_p),
        ("ControlUnitPrivileged", ctypes.c_void_p),
        ("NotifyPowerChange", ctypes.c_void_p),
        ("Reserved_1", ctypes.c_void_p),
        ("PipelineInit", ctypes.c_void_p),
        ("PipelineCleanup", ctypes.c_void_p),
        ("Activate", ctypes.c_void_p),
        ("Deactivate", ctypes.c_void_p),
        ("QueryExtendedInfo", ctypes.c_void_p),
        ("IdentifyAll", ctypes.c_void_p),
        ("SetEnrollmentSelector", ctypes.c_void_p),
        ("SetEnrollmentParameters", ctypes.c_void_p),
        ("QueryExtendedEnrollmentStatus", ctypes.c_void_p),
        ("RefreshCache", ctypes.c_void_p),
        ("SelectCalibrationFormat", ctypes.c_void_p),
        ("QueryCalibrationData", ctypes.c_void_p),
        ("SetAccountPolicy", ctypes.c_void_p),
        ("CreateKey", ctypes.c_void_p),
        ("IdentifyFeatureSetSecure", ctypes.c_void_p),
        ("AcceptPrivateSensorTypeInfo", ctypes.c_void_p),
        ("CreateEnrollmentAuthenticated", ctypes.c_void_p),
        ("IdentifyFeatureSetAuthenticated", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct WINBIO_ADAPTER_INTERFACE_VERSION {
    pub MajorVersion: u16,
    pub MinorVersion: u16,
}

#[repr(C)]
pub struct WINBIO_ENGINE_INTERFACE {
    pub Version: WINBIO_ADAPTER_INTERFACE_VERSION,
    pub Type: u32,
    pub Size: usize,
    pub AdapterId: GUID,
    pub Attach: *mut core::ffi::c_void,
    pub Detach: *mut core::ffi::c_void,
    pub ClearContext: *mut core::ffi::c_void,
    pub QueryPreferredFormat: *mut core::ffi::c_void,
    pub QueryIndexVectorSize: *mut core::ffi::c_void,
    pub QueryHashAlgorithms: *mut core::ffi::c_void,
    pub SetHashAlgorithm: *mut core::ffi::c_void,
    pub QuerySampleHint: *mut core::ffi::c_void,
    pub AcceptSampleData: *mut core::ffi::c_void,
    pub ExportEngineData: *mut core::ffi::c_void,
    pub VerifyFeatureSet: *mut core::ffi::c_void,
    pub IdentifyFeatureSet: *mut core::ffi::c_void,
    pub CreateEnrollment: *mut core::ffi::c_void,
    pub UpdateEnrollment: *mut core::ffi::c_void,
    pub GetEnrollmentStatus: *mut core::ffi::c_void,
    pub GetEnrollmentHash: *mut core::ffi::c_void,
    pub CheckForDuplicate: *mut core::ffi::c_void,
    pub CommitEnrollment: *mut core::ffi::c_void,
    pub DiscardEnrollment: *mut core::ffi::c_void,
    pub ControlUnit: *mut core::ffi::c_void,
    pub ControlUnitPrivileged: *mut core::ffi::c_void,
    pub NotifyPowerChange: *mut core::ffi::c_void,
    pub Reserved_1: *mut core::ffi::c_void,
    pub PipelineInit: *mut core::ffi::c_void,
    pub PipelineCleanup: *mut core::ffi::c_void,
    pub Activate: *mut core::ffi::c_void,
    pub Deactivate: *mut core::ffi::c_void,
    pub QueryExtendedInfo: *mut core::ffi::c_void,
    pub IdentifyAll: *mut core::ffi::c_void,
    pub SetEnrollmentSelector: *mut core::ffi::c_void,
    pub SetEnrollmentParameters: *mut core::ffi::c_void,
    pub QueryExtendedEnrollmentStatus: *mut core::ffi::c_void,
    pub RefreshCache: *mut core::ffi::c_void,
    pub SelectCalibrationFormat: *mut core::ffi::c_void,
    pub QueryCalibrationData: *mut core::ffi::c_void,
    pub SetAccountPolicy: *mut core::ffi::c_void,
    pub CreateKey: *mut core::ffi::c_void,
    pub IdentifyFeatureSetSecure: *mut core::ffi::c_void,
    pub AcceptPrivateSensorTypeInfo: *mut core::ffi::c_void,
    pub CreateEnrollmentAuthenticated: *mut core::ffi::c_void,
    pub IdentifyFeatureSetAuthenticated: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type WINBIO_ADAPTER_INTERFACE_VERSION struct {
	MajorVersion uint16
	MinorVersion uint16
}

type WINBIO_ENGINE_INTERFACE struct {
	Version WINBIO_ADAPTER_INTERFACE_VERSION
	Type uint32
	Size uintptr
	AdapterId windows.GUID
	Attach uintptr
	Detach uintptr
	ClearContext uintptr
	QueryPreferredFormat uintptr
	QueryIndexVectorSize uintptr
	QueryHashAlgorithms uintptr
	SetHashAlgorithm uintptr
	QuerySampleHint uintptr
	AcceptSampleData uintptr
	ExportEngineData uintptr
	VerifyFeatureSet uintptr
	IdentifyFeatureSet uintptr
	CreateEnrollment uintptr
	UpdateEnrollment uintptr
	GetEnrollmentStatus uintptr
	GetEnrollmentHash uintptr
	CheckForDuplicate uintptr
	CommitEnrollment uintptr
	DiscardEnrollment uintptr
	ControlUnit uintptr
	ControlUnitPrivileged uintptr
	NotifyPowerChange uintptr
	Reserved_1 uintptr
	PipelineInit uintptr
	PipelineCleanup uintptr
	Activate uintptr
	Deactivate uintptr
	QueryExtendedInfo uintptr
	IdentifyAll uintptr
	SetEnrollmentSelector uintptr
	SetEnrollmentParameters uintptr
	QueryExtendedEnrollmentStatus uintptr
	RefreshCache uintptr
	SelectCalibrationFormat uintptr
	QueryCalibrationData uintptr
	SetAccountPolicy uintptr
	CreateKey uintptr
	IdentifyFeatureSetSecure uintptr
	AcceptPrivateSensorTypeInfo uintptr
	CreateEnrollmentAuthenticated uintptr
	IdentifyFeatureSetAuthenticated uintptr
}
type
  WINBIO_ADAPTER_INTERFACE_VERSION = record
    MajorVersion: Word;
    MinorVersion: Word;
  end;

  WINBIO_ENGINE_INTERFACE = record
    Version: WINBIO_ADAPTER_INTERFACE_VERSION;
    Type: DWORD;
    Size: NativeUInt;
    AdapterId: TGUID;
    Attach: Pointer;
    Detach: Pointer;
    ClearContext: Pointer;
    QueryPreferredFormat: Pointer;
    QueryIndexVectorSize: Pointer;
    QueryHashAlgorithms: Pointer;
    SetHashAlgorithm: Pointer;
    QuerySampleHint: Pointer;
    AcceptSampleData: Pointer;
    ExportEngineData: Pointer;
    VerifyFeatureSet: Pointer;
    IdentifyFeatureSet: Pointer;
    CreateEnrollment: Pointer;
    UpdateEnrollment: Pointer;
    GetEnrollmentStatus: Pointer;
    GetEnrollmentHash: Pointer;
    CheckForDuplicate: Pointer;
    CommitEnrollment: Pointer;
    DiscardEnrollment: Pointer;
    ControlUnit: Pointer;
    ControlUnitPrivileged: Pointer;
    NotifyPowerChange: Pointer;
    Reserved_1: Pointer;
    PipelineInit: Pointer;
    PipelineCleanup: Pointer;
    Activate: Pointer;
    Deactivate: Pointer;
    QueryExtendedInfo: Pointer;
    IdentifyAll: Pointer;
    SetEnrollmentSelector: Pointer;
    SetEnrollmentParameters: Pointer;
    QueryExtendedEnrollmentStatus: Pointer;
    RefreshCache: Pointer;
    SelectCalibrationFormat: Pointer;
    QueryCalibrationData: Pointer;
    SetAccountPolicy: Pointer;
    CreateKey: Pointer;
    IdentifyFeatureSetSecure: Pointer;
    AcceptPrivateSensorTypeInfo: Pointer;
    CreateEnrollmentAuthenticated: Pointer;
    IdentifyFeatureSetAuthenticated: Pointer;
  end;
const WINBIO_ADAPTER_INTERFACE_VERSION = extern struct {
    MajorVersion: u16,
    MinorVersion: u16,
};

const WINBIO_ENGINE_INTERFACE = extern struct {
    Version: WINBIO_ADAPTER_INTERFACE_VERSION,
    Type: u32,
    Size: usize,
    AdapterId: GUID,
    Attach: ?*anyopaque,
    Detach: ?*anyopaque,
    ClearContext: ?*anyopaque,
    QueryPreferredFormat: ?*anyopaque,
    QueryIndexVectorSize: ?*anyopaque,
    QueryHashAlgorithms: ?*anyopaque,
    SetHashAlgorithm: ?*anyopaque,
    QuerySampleHint: ?*anyopaque,
    AcceptSampleData: ?*anyopaque,
    ExportEngineData: ?*anyopaque,
    VerifyFeatureSet: ?*anyopaque,
    IdentifyFeatureSet: ?*anyopaque,
    CreateEnrollment: ?*anyopaque,
    UpdateEnrollment: ?*anyopaque,
    GetEnrollmentStatus: ?*anyopaque,
    GetEnrollmentHash: ?*anyopaque,
    CheckForDuplicate: ?*anyopaque,
    CommitEnrollment: ?*anyopaque,
    DiscardEnrollment: ?*anyopaque,
    ControlUnit: ?*anyopaque,
    ControlUnitPrivileged: ?*anyopaque,
    NotifyPowerChange: ?*anyopaque,
    Reserved_1: ?*anyopaque,
    PipelineInit: ?*anyopaque,
    PipelineCleanup: ?*anyopaque,
    Activate: ?*anyopaque,
    Deactivate: ?*anyopaque,
    QueryExtendedInfo: ?*anyopaque,
    IdentifyAll: ?*anyopaque,
    SetEnrollmentSelector: ?*anyopaque,
    SetEnrollmentParameters: ?*anyopaque,
    QueryExtendedEnrollmentStatus: ?*anyopaque,
    RefreshCache: ?*anyopaque,
    SelectCalibrationFormat: ?*anyopaque,
    QueryCalibrationData: ?*anyopaque,
    SetAccountPolicy: ?*anyopaque,
    CreateKey: ?*anyopaque,
    IdentifyFeatureSetSecure: ?*anyopaque,
    AcceptPrivateSensorTypeInfo: ?*anyopaque,
    CreateEnrollmentAuthenticated: ?*anyopaque,
    IdentifyFeatureSetAuthenticated: ?*anyopaque,
};
type
  WINBIO_ADAPTER_INTERFACE_VERSION {.bycopy.} = object
    MajorVersion: uint16
    MinorVersion: uint16

  WINBIO_ENGINE_INTERFACE {.bycopy.} = object
    Version: WINBIO_ADAPTER_INTERFACE_VERSION
    Type: uint32
    Size: uint
    AdapterId: GUID
    Attach: pointer
    Detach: pointer
    ClearContext: pointer
    QueryPreferredFormat: pointer
    QueryIndexVectorSize: pointer
    QueryHashAlgorithms: pointer
    SetHashAlgorithm: pointer
    QuerySampleHint: pointer
    AcceptSampleData: pointer
    ExportEngineData: pointer
    VerifyFeatureSet: pointer
    IdentifyFeatureSet: pointer
    CreateEnrollment: pointer
    UpdateEnrollment: pointer
    GetEnrollmentStatus: pointer
    GetEnrollmentHash: pointer
    CheckForDuplicate: pointer
    CommitEnrollment: pointer
    DiscardEnrollment: pointer
    ControlUnit: pointer
    ControlUnitPrivileged: pointer
    NotifyPowerChange: pointer
    Reserved_1: pointer
    PipelineInit: pointer
    PipelineCleanup: pointer
    Activate: pointer
    Deactivate: pointer
    QueryExtendedInfo: pointer
    IdentifyAll: pointer
    SetEnrollmentSelector: pointer
    SetEnrollmentParameters: pointer
    QueryExtendedEnrollmentStatus: pointer
    RefreshCache: pointer
    SelectCalibrationFormat: pointer
    QueryCalibrationData: pointer
    SetAccountPolicy: pointer
    CreateKey: pointer
    IdentifyFeatureSetSecure: pointer
    AcceptPrivateSensorTypeInfo: pointer
    CreateEnrollmentAuthenticated: pointer
    IdentifyFeatureSetAuthenticated: pointer
struct WINBIO_ADAPTER_INTERFACE_VERSION
{
    ushort MajorVersion;
    ushort MinorVersion;
}

struct WINBIO_ENGINE_INTERFACE
{
    WINBIO_ADAPTER_INTERFACE_VERSION Version;
    uint Type;
    size_t Size;
    GUID AdapterId;
    void* Attach;
    void* Detach;
    void* ClearContext;
    void* QueryPreferredFormat;
    void* QueryIndexVectorSize;
    void* QueryHashAlgorithms;
    void* SetHashAlgorithm;
    void* QuerySampleHint;
    void* AcceptSampleData;
    void* ExportEngineData;
    void* VerifyFeatureSet;
    void* IdentifyFeatureSet;
    void* CreateEnrollment;
    void* UpdateEnrollment;
    void* GetEnrollmentStatus;
    void* GetEnrollmentHash;
    void* CheckForDuplicate;
    void* CommitEnrollment;
    void* DiscardEnrollment;
    void* ControlUnit;
    void* ControlUnitPrivileged;
    void* NotifyPowerChange;
    void* Reserved_1;
    void* PipelineInit;
    void* PipelineCleanup;
    void* Activate;
    void* Deactivate;
    void* QueryExtendedInfo;
    void* IdentifyAll;
    void* SetEnrollmentSelector;
    void* SetEnrollmentParameters;
    void* QueryExtendedEnrollmentStatus;
    void* RefreshCache;
    void* SelectCalibrationFormat;
    void* QueryCalibrationData;
    void* SetAccountPolicy;
    void* CreateKey;
    void* IdentifyFeatureSetSecure;
    void* AcceptPrivateSensorTypeInfo;
    void* CreateEnrollmentAuthenticated;
    void* IdentifyFeatureSetAuthenticated;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; WINBIO_ENGINE_INTERFACE サイズ: 192 バイト(x86)
dim st, 48    ; 4byte整数×48(構造体サイズ 192 / 4 切り上げ)
; Version : WINBIO_ADAPTER_INTERFACE_VERSION (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; Type : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; Size : UINT_PTR (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; AdapterId : GUID (+12, 16byte)  varptr(st)+12 を基点に操作(16byte:入れ子/配列)
; Attach : PIBIO_ENGINE_ATTACH_FN (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; Detach : PIBIO_ENGINE_DETACH_FN (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; ClearContext : PIBIO_ENGINE_CLEAR_CONTEXT_FN (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; QueryPreferredFormat : PIBIO_ENGINE_QUERY_PREFERRED_FORMAT_FN (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; QueryIndexVectorSize : PIBIO_ENGINE_QUERY_INDEX_VECTOR_SIZE_FN (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; QueryHashAlgorithms : PIBIO_ENGINE_QUERY_HASH_ALGORITHMS_FN (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; SetHashAlgorithm : PIBIO_ENGINE_SET_HASH_ALGORITHM_FN (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; QuerySampleHint : PIBIO_ENGINE_QUERY_SAMPLE_HINT_FN (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; AcceptSampleData : PIBIO_ENGINE_ACCEPT_SAMPLE_DATA_FN (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; ExportEngineData : PIBIO_ENGINE_EXPORT_ENGINE_DATA_FN (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; VerifyFeatureSet : PIBIO_ENGINE_VERIFY_FEATURE_SET_FN (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; IdentifyFeatureSet : PIBIO_ENGINE_IDENTIFY_FEATURE_SET_FN (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; CreateEnrollment : PIBIO_ENGINE_CREATE_ENROLLMENT_FN (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; UpdateEnrollment : PIBIO_ENGINE_UPDATE_ENROLLMENT_FN (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; GetEnrollmentStatus : PIBIO_ENGINE_GET_ENROLLMENT_STATUS_FN (+84, 4byte)  st.21 = 値  /  値 = st.21   (lpoke/lpeek も可)
; GetEnrollmentHash : PIBIO_ENGINE_GET_ENROLLMENT_HASH_FN (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; CheckForDuplicate : PIBIO_ENGINE_CHECK_FOR_DUPLICATE_FN (+92, 4byte)  st.23 = 値  /  値 = st.23   (lpoke/lpeek も可)
; CommitEnrollment : PIBIO_ENGINE_COMMIT_ENROLLMENT_FN (+96, 4byte)  st.24 = 値  /  値 = st.24   (lpoke/lpeek も可)
; DiscardEnrollment : PIBIO_ENGINE_DISCARD_ENROLLMENT_FN (+100, 4byte)  st.25 = 値  /  値 = st.25   (lpoke/lpeek も可)
; ControlUnit : PIBIO_ENGINE_CONTROL_UNIT_FN (+104, 4byte)  st.26 = 値  /  値 = st.26   (lpoke/lpeek も可)
; ControlUnitPrivileged : PIBIO_ENGINE_CONTROL_UNIT_PRIVILEGED_FN (+108, 4byte)  st.27 = 値  /  値 = st.27   (lpoke/lpeek も可)
; NotifyPowerChange : PIBIO_ENGINE_NOTIFY_POWER_CHANGE_FN (+112, 4byte)  st.28 = 値  /  値 = st.28   (lpoke/lpeek も可)
; Reserved_1 : PIBIO_ENGINE_RESERVED_1_FN (+116, 4byte)  st.29 = 値  /  値 = st.29   (lpoke/lpeek も可)
; PipelineInit : PIBIO_ENGINE_PIPELINE_INIT_FN (+120, 4byte)  st.30 = 値  /  値 = st.30   (lpoke/lpeek も可)
; PipelineCleanup : PIBIO_ENGINE_PIPELINE_CLEANUP_FN (+124, 4byte)  st.31 = 値  /  値 = st.31   (lpoke/lpeek も可)
; Activate : PIBIO_ENGINE_ACTIVATE_FN (+128, 4byte)  st.32 = 値  /  値 = st.32   (lpoke/lpeek も可)
; Deactivate : PIBIO_ENGINE_DEACTIVATE_FN (+132, 4byte)  st.33 = 値  /  値 = st.33   (lpoke/lpeek も可)
; QueryExtendedInfo : PIBIO_ENGINE_QUERY_EXTENDED_INFO_FN (+136, 4byte)  st.34 = 値  /  値 = st.34   (lpoke/lpeek も可)
; IdentifyAll : PIBIO_ENGINE_IDENTIFY_ALL_FN (+140, 4byte)  st.35 = 値  /  値 = st.35   (lpoke/lpeek も可)
; SetEnrollmentSelector : PIBIO_ENGINE_SET_ENROLLMENT_SELECTOR_FN (+144, 4byte)  st.36 = 値  /  値 = st.36   (lpoke/lpeek も可)
; SetEnrollmentParameters : PIBIO_ENGINE_SET_ENROLLMENT_PARAMETERS_FN (+148, 4byte)  st.37 = 値  /  値 = st.37   (lpoke/lpeek も可)
; QueryExtendedEnrollmentStatus : PIBIO_ENGINE_QUERY_EXTENDED_ENROLLMENT_STATUS_FN (+152, 4byte)  st.38 = 値  /  値 = st.38   (lpoke/lpeek も可)
; RefreshCache : PIBIO_ENGINE_REFRESH_CACHE_FN (+156, 4byte)  st.39 = 値  /  値 = st.39   (lpoke/lpeek も可)
; SelectCalibrationFormat : PIBIO_ENGINE_SELECT_CALIBRATION_FORMAT_FN (+160, 4byte)  st.40 = 値  /  値 = st.40   (lpoke/lpeek も可)
; QueryCalibrationData : PIBIO_ENGINE_QUERY_CALIBRATION_DATA_FN (+164, 4byte)  st.41 = 値  /  値 = st.41   (lpoke/lpeek も可)
; SetAccountPolicy : PIBIO_ENGINE_SET_ACCOUNT_POLICY_FN (+168, 4byte)  st.42 = 値  /  値 = st.42   (lpoke/lpeek も可)
; CreateKey : PIBIO_ENGINE_CREATE_KEY_FN (+172, 4byte)  st.43 = 値  /  値 = st.43   (lpoke/lpeek も可)
; IdentifyFeatureSetSecure : PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN (+176, 4byte)  st.44 = 値  /  値 = st.44   (lpoke/lpeek も可)
; AcceptPrivateSensorTypeInfo : PIBIO_ENGINE_ACCEPT_PRIVATE_SENSOR_TYPE_INFO_FN (+180, 4byte)  st.45 = 値  /  値 = st.45   (lpoke/lpeek も可)
; CreateEnrollmentAuthenticated : PIBIO_ENGINE_CREATE_ENROLLMENT_AUTHENTICATED_FN (+184, 4byte)  st.46 = 値  /  値 = st.46   (lpoke/lpeek も可)
; IdentifyFeatureSetAuthenticated : PIBIO_ENGINE_IDENTIFY_FEATURE_SET_AUTHENTICATED_FN (+188, 4byte)  st.47 = 値  /  値 = st.47   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; WINBIO_ENGINE_INTERFACE サイズ: 360 バイト(x64)
dim st, 90    ; 4byte整数×90(構造体サイズ 360 / 4 切り上げ)
; Version : WINBIO_ADAPTER_INTERFACE_VERSION (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; Type : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; Size : UINT_PTR (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; AdapterId : GUID (+16, 16byte)  varptr(st)+16 を基点に操作(16byte:入れ子/配列)
; Attach : PIBIO_ENGINE_ATTACH_FN (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; Detach : PIBIO_ENGINE_DETACH_FN (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; ClearContext : PIBIO_ENGINE_CLEAR_CONTEXT_FN (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; QueryPreferredFormat : PIBIO_ENGINE_QUERY_PREFERRED_FORMAT_FN (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; QueryIndexVectorSize : PIBIO_ENGINE_QUERY_INDEX_VECTOR_SIZE_FN (+64, 8byte)  qpoke st,64,値 / qpeek(st,64)  ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; QueryHashAlgorithms : PIBIO_ENGINE_QUERY_HASH_ALGORITHMS_FN (+72, 8byte)  qpoke st,72,値 / qpeek(st,72)  ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; SetHashAlgorithm : PIBIO_ENGINE_SET_HASH_ALGORITHM_FN (+80, 8byte)  qpoke st,80,値 / qpeek(st,80)  ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; QuerySampleHint : PIBIO_ENGINE_QUERY_SAMPLE_HINT_FN (+88, 8byte)  qpoke st,88,値 / qpeek(st,88)  ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; AcceptSampleData : PIBIO_ENGINE_ACCEPT_SAMPLE_DATA_FN (+96, 8byte)  qpoke st,96,値 / qpeek(st,96)  ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; ExportEngineData : PIBIO_ENGINE_EXPORT_ENGINE_DATA_FN (+104, 8byte)  qpoke st,104,値 / qpeek(st,104)  ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; VerifyFeatureSet : PIBIO_ENGINE_VERIFY_FEATURE_SET_FN (+112, 8byte)  qpoke st,112,値 / qpeek(st,112)  ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; IdentifyFeatureSet : PIBIO_ENGINE_IDENTIFY_FEATURE_SET_FN (+120, 8byte)  qpoke st,120,値 / qpeek(st,120)  ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; CreateEnrollment : PIBIO_ENGINE_CREATE_ENROLLMENT_FN (+128, 8byte)  qpoke st,128,値 / qpeek(st,128)  ※IronHSPのみ。3.7/3.8は lpoke st,128,下位 : lpoke st,132,上位
; UpdateEnrollment : PIBIO_ENGINE_UPDATE_ENROLLMENT_FN (+136, 8byte)  qpoke st,136,値 / qpeek(st,136)  ※IronHSPのみ。3.7/3.8は lpoke st,136,下位 : lpoke st,140,上位
; GetEnrollmentStatus : PIBIO_ENGINE_GET_ENROLLMENT_STATUS_FN (+144, 8byte)  qpoke st,144,値 / qpeek(st,144)  ※IronHSPのみ。3.7/3.8は lpoke st,144,下位 : lpoke st,148,上位
; GetEnrollmentHash : PIBIO_ENGINE_GET_ENROLLMENT_HASH_FN (+152, 8byte)  qpoke st,152,値 / qpeek(st,152)  ※IronHSPのみ。3.7/3.8は lpoke st,152,下位 : lpoke st,156,上位
; CheckForDuplicate : PIBIO_ENGINE_CHECK_FOR_DUPLICATE_FN (+160, 8byte)  qpoke st,160,値 / qpeek(st,160)  ※IronHSPのみ。3.7/3.8は lpoke st,160,下位 : lpoke st,164,上位
; CommitEnrollment : PIBIO_ENGINE_COMMIT_ENROLLMENT_FN (+168, 8byte)  qpoke st,168,値 / qpeek(st,168)  ※IronHSPのみ。3.7/3.8は lpoke st,168,下位 : lpoke st,172,上位
; DiscardEnrollment : PIBIO_ENGINE_DISCARD_ENROLLMENT_FN (+176, 8byte)  qpoke st,176,値 / qpeek(st,176)  ※IronHSPのみ。3.7/3.8は lpoke st,176,下位 : lpoke st,180,上位
; ControlUnit : PIBIO_ENGINE_CONTROL_UNIT_FN (+184, 8byte)  qpoke st,184,値 / qpeek(st,184)  ※IronHSPのみ。3.7/3.8は lpoke st,184,下位 : lpoke st,188,上位
; ControlUnitPrivileged : PIBIO_ENGINE_CONTROL_UNIT_PRIVILEGED_FN (+192, 8byte)  qpoke st,192,値 / qpeek(st,192)  ※IronHSPのみ。3.7/3.8は lpoke st,192,下位 : lpoke st,196,上位
; NotifyPowerChange : PIBIO_ENGINE_NOTIFY_POWER_CHANGE_FN (+200, 8byte)  qpoke st,200,値 / qpeek(st,200)  ※IronHSPのみ。3.7/3.8は lpoke st,200,下位 : lpoke st,204,上位
; Reserved_1 : PIBIO_ENGINE_RESERVED_1_FN (+208, 8byte)  qpoke st,208,値 / qpeek(st,208)  ※IronHSPのみ。3.7/3.8は lpoke st,208,下位 : lpoke st,212,上位
; PipelineInit : PIBIO_ENGINE_PIPELINE_INIT_FN (+216, 8byte)  qpoke st,216,値 / qpeek(st,216)  ※IronHSPのみ。3.7/3.8は lpoke st,216,下位 : lpoke st,220,上位
; PipelineCleanup : PIBIO_ENGINE_PIPELINE_CLEANUP_FN (+224, 8byte)  qpoke st,224,値 / qpeek(st,224)  ※IronHSPのみ。3.7/3.8は lpoke st,224,下位 : lpoke st,228,上位
; Activate : PIBIO_ENGINE_ACTIVATE_FN (+232, 8byte)  qpoke st,232,値 / qpeek(st,232)  ※IronHSPのみ。3.7/3.8は lpoke st,232,下位 : lpoke st,236,上位
; Deactivate : PIBIO_ENGINE_DEACTIVATE_FN (+240, 8byte)  qpoke st,240,値 / qpeek(st,240)  ※IronHSPのみ。3.7/3.8は lpoke st,240,下位 : lpoke st,244,上位
; QueryExtendedInfo : PIBIO_ENGINE_QUERY_EXTENDED_INFO_FN (+248, 8byte)  qpoke st,248,値 / qpeek(st,248)  ※IronHSPのみ。3.7/3.8は lpoke st,248,下位 : lpoke st,252,上位
; IdentifyAll : PIBIO_ENGINE_IDENTIFY_ALL_FN (+256, 8byte)  qpoke st,256,値 / qpeek(st,256)  ※IronHSPのみ。3.7/3.8は lpoke st,256,下位 : lpoke st,260,上位
; SetEnrollmentSelector : PIBIO_ENGINE_SET_ENROLLMENT_SELECTOR_FN (+264, 8byte)  qpoke st,264,値 / qpeek(st,264)  ※IronHSPのみ。3.7/3.8は lpoke st,264,下位 : lpoke st,268,上位
; SetEnrollmentParameters : PIBIO_ENGINE_SET_ENROLLMENT_PARAMETERS_FN (+272, 8byte)  qpoke st,272,値 / qpeek(st,272)  ※IronHSPのみ。3.7/3.8は lpoke st,272,下位 : lpoke st,276,上位
; QueryExtendedEnrollmentStatus : PIBIO_ENGINE_QUERY_EXTENDED_ENROLLMENT_STATUS_FN (+280, 8byte)  qpoke st,280,値 / qpeek(st,280)  ※IronHSPのみ。3.7/3.8は lpoke st,280,下位 : lpoke st,284,上位
; RefreshCache : PIBIO_ENGINE_REFRESH_CACHE_FN (+288, 8byte)  qpoke st,288,値 / qpeek(st,288)  ※IronHSPのみ。3.7/3.8は lpoke st,288,下位 : lpoke st,292,上位
; SelectCalibrationFormat : PIBIO_ENGINE_SELECT_CALIBRATION_FORMAT_FN (+296, 8byte)  qpoke st,296,値 / qpeek(st,296)  ※IronHSPのみ。3.7/3.8は lpoke st,296,下位 : lpoke st,300,上位
; QueryCalibrationData : PIBIO_ENGINE_QUERY_CALIBRATION_DATA_FN (+304, 8byte)  qpoke st,304,値 / qpeek(st,304)  ※IronHSPのみ。3.7/3.8は lpoke st,304,下位 : lpoke st,308,上位
; SetAccountPolicy : PIBIO_ENGINE_SET_ACCOUNT_POLICY_FN (+312, 8byte)  qpoke st,312,値 / qpeek(st,312)  ※IronHSPのみ。3.7/3.8は lpoke st,312,下位 : lpoke st,316,上位
; CreateKey : PIBIO_ENGINE_CREATE_KEY_FN (+320, 8byte)  qpoke st,320,値 / qpeek(st,320)  ※IronHSPのみ。3.7/3.8は lpoke st,320,下位 : lpoke st,324,上位
; IdentifyFeatureSetSecure : PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN (+328, 8byte)  qpoke st,328,値 / qpeek(st,328)  ※IronHSPのみ。3.7/3.8は lpoke st,328,下位 : lpoke st,332,上位
; AcceptPrivateSensorTypeInfo : PIBIO_ENGINE_ACCEPT_PRIVATE_SENSOR_TYPE_INFO_FN (+336, 8byte)  qpoke st,336,値 / qpeek(st,336)  ※IronHSPのみ。3.7/3.8は lpoke st,336,下位 : lpoke st,340,上位
; CreateEnrollmentAuthenticated : PIBIO_ENGINE_CREATE_ENROLLMENT_AUTHENTICATED_FN (+344, 8byte)  qpoke st,344,値 / qpeek(st,344)  ※IronHSPのみ。3.7/3.8は lpoke st,344,下位 : lpoke st,348,上位
; IdentifyFeatureSetAuthenticated : PIBIO_ENGINE_IDENTIFY_FEATURE_SET_AUTHENTICATED_FN (+352, 8byte)  qpoke st,352,値 / qpeek(st,352)  ※IronHSPのみ。3.7/3.8は lpoke st,352,下位 : lpoke st,356,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global WINBIO_ADAPTER_INTERFACE_VERSION
    #field short MajorVersion
    #field short MinorVersion
#endstruct

#defstruct global GUID, pack=1
    #field int Data1
    #field short Data2
    #field short Data3
    #field byte Data4 8
#endstruct

#defstruct global WINBIO_ENGINE_INTERFACE
    #field WINBIO_ADAPTER_INTERFACE_VERSION Version
    #field int Type
    #field intptr Size
    #field GUID AdapterId
    #field intptr Attach
    #field intptr Detach
    #field intptr ClearContext
    #field intptr QueryPreferredFormat
    #field intptr QueryIndexVectorSize
    #field intptr QueryHashAlgorithms
    #field intptr SetHashAlgorithm
    #field intptr QuerySampleHint
    #field intptr AcceptSampleData
    #field intptr ExportEngineData
    #field intptr VerifyFeatureSet
    #field intptr IdentifyFeatureSet
    #field intptr CreateEnrollment
    #field intptr UpdateEnrollment
    #field intptr GetEnrollmentStatus
    #field intptr GetEnrollmentHash
    #field intptr CheckForDuplicate
    #field intptr CommitEnrollment
    #field intptr DiscardEnrollment
    #field intptr ControlUnit
    #field intptr ControlUnitPrivileged
    #field intptr NotifyPowerChange
    #field intptr Reserved_1
    #field intptr PipelineInit
    #field intptr PipelineCleanup
    #field intptr Activate
    #field intptr Deactivate
    #field intptr QueryExtendedInfo
    #field intptr IdentifyAll
    #field intptr SetEnrollmentSelector
    #field intptr SetEnrollmentParameters
    #field intptr QueryExtendedEnrollmentStatus
    #field intptr RefreshCache
    #field intptr SelectCalibrationFormat
    #field intptr QueryCalibrationData
    #field intptr SetAccountPolicy
    #field intptr CreateKey
    #field intptr IdentifyFeatureSetSecure
    #field intptr AcceptPrivateSensorTypeInfo
    #field intptr CreateEnrollmentAuthenticated
    #field intptr IdentifyFeatureSetAuthenticated
#endstruct

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