WINBIO_ENGINE_INTERFACE
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Version | WINBIO_ADAPTER_INTERFACE_VERSION | 4 | +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 でなければなりません。 |
| Type | DWORD | 4 | +4 | +4 | アダプターの種類です。これは WINBIO_ADAPTER_TYPE_ENGINE でなければなりません。 |
| Size | UINT_PTR | 8/4 | +8 | +8 | この構造体のサイズ (バイト単位) です。この値には WINBIO_ENGINE_INTERFACE 構造体のサイズを設定します。 |
| AdapterId | GUID | 16 | +16 | +12 | エンジンアダプターを一意に識別する GUID です。この値は開発者が生成する必要があります。 |
| Attach | PIBIO_ENGINE_ATTACH_FN | 8/4 | +32 | +28 | EngineAdapterAttach 関数の実装へのポインターです。 |
| Detach | PIBIO_ENGINE_DETACH_FN | 8/4 | +40 | +32 | EngineAdapterDetach 関数の実装へのポインターです。 |
| ClearContext | PIBIO_ENGINE_CLEAR_CONTEXT_FN | 8/4 | +48 | +36 | EngineAdapterClearContext 関数の実装へのポインターです。 |
| QueryPreferredFormat | PIBIO_ENGINE_QUERY_PREFERRED_FORMAT_FN | 8/4 | +56 | +40 | EngineAdapterQueryPreferredFormat 関数の実装へのポインターです。 |
| QueryIndexVectorSize | PIBIO_ENGINE_QUERY_INDEX_VECTOR_SIZE_FN | 8/4 | +64 | +44 | EngineAdapterQueryIndexVectorSize 関数の実装へのポインターです。 |
| QueryHashAlgorithms | PIBIO_ENGINE_QUERY_HASH_ALGORITHMS_FN | 8/4 | +72 | +48 | EngineAdapterQueryHashAlgorithms 関数の実装へのポインターです。 |
| SetHashAlgorithm | PIBIO_ENGINE_SET_HASH_ALGORITHM_FN | 8/4 | +80 | +52 | EngineAdapterSetHashAlgorithm 関数の実装へのポインターです。 |
| QuerySampleHint | PIBIO_ENGINE_QUERY_SAMPLE_HINT_FN | 8/4 | +88 | +56 | EngineAdapterQuerySampleHint 関数の実装へのポインターです。 |
| AcceptSampleData | PIBIO_ENGINE_ACCEPT_SAMPLE_DATA_FN | 8/4 | +96 | +60 | EngineAdapterAcceptSampleData 関数の実装へのポインターです。 |
| ExportEngineData | PIBIO_ENGINE_EXPORT_ENGINE_DATA_FN | 8/4 | +104 | +64 | EngineAdapterExportEngineData 関数の実装へのポインターです。 |
| VerifyFeatureSet | PIBIO_ENGINE_VERIFY_FEATURE_SET_FN | 8/4 | +112 | +68 | EngineAdapterVerifyFeatureSet 関数の実装へのポインターです。 |
| IdentifyFeatureSet | PIBIO_ENGINE_IDENTIFY_FEATURE_SET_FN | 8/4 | +120 | +72 | EngineAdapterIdentifyFeatureSet 関数の実装へのポインターです。 |
| CreateEnrollment | PIBIO_ENGINE_CREATE_ENROLLMENT_FN | 8/4 | +128 | +76 | EngineAdapterCreateEnrollment 関数の実装へのポインターです。 |
| UpdateEnrollment | PIBIO_ENGINE_UPDATE_ENROLLMENT_FN | 8/4 | +136 | +80 | EngineAdapterUpdateEnrollment 関数の実装へのポインターです。 |
| GetEnrollmentStatus | PIBIO_ENGINE_GET_ENROLLMENT_STATUS_FN | 8/4 | +144 | +84 | EngineAdapterGetEnrollmentStatus 関数の実装へのポインターです。 |
| GetEnrollmentHash | PIBIO_ENGINE_GET_ENROLLMENT_HASH_FN | 8/4 | +152 | +88 | EngineAdapterGetEnrollmentHash 関数の実装へのポインターです。 |
| CheckForDuplicate | PIBIO_ENGINE_CHECK_FOR_DUPLICATE_FN | 8/4 | +160 | +92 | EngineAdapterCheckForDuplicate 関数の実装へのポインターです。 |
| CommitEnrollment | PIBIO_ENGINE_COMMIT_ENROLLMENT_FN | 8/4 | +168 | +96 | EngineAdapterCommitEnrollment 関数の実装へのポインターです。 |
| DiscardEnrollment | PIBIO_ENGINE_DISCARD_ENROLLMENT_FN | 8/4 | +176 | +100 | EngineAdapterDiscardEnrollment 関数の実装へのポインターです。 |
| ControlUnit | PIBIO_ENGINE_CONTROL_UNIT_FN | 8/4 | +184 | +104 | EngineAdapterControlUnit 関数の実装へのポインターです。 |
| ControlUnitPrivileged | PIBIO_ENGINE_CONTROL_UNIT_PRIVILEGED_FN | 8/4 | +192 | +108 | EngineAdapterControlUnitPrivileged 関数の実装へのポインターです。 |
| NotifyPowerChange | PIBIO_ENGINE_NOTIFY_POWER_CHANGE_FN | 8/4 | +200 | +112 | EngineAdapterNotifyPowerChange 関数の実装へのポインターです。このメンバーは Windows 8 以降でサポートされます。 |
| Reserved_1 | PIBIO_ENGINE_RESERVED_1_FN | 8/4 | +208 | +116 | このフィールドは予約済みであり、NULL を設定してください。 |
| PipelineInit | PIBIO_ENGINE_PIPELINE_INIT_FN | 8/4 | +216 | +120 | EngineAdapterPipelineInit 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。 |
| PipelineCleanup | PIBIO_ENGINE_PIPELINE_CLEANUP_FN | 8/4 | +224 | +124 | EngineAdapterPipelineCleanup 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。 |
| Activate | PIBIO_ENGINE_ACTIVATE_FN | 8/4 | +232 | +128 | EngineAdapterActivate 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。 |
| Deactivate | PIBIO_ENGINE_DEACTIVATE_FN | 8/4 | +240 | +132 | EngineAdapterDeactivate 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。 |
| QueryExtendedInfo | PIBIO_ENGINE_QUERY_EXTENDED_INFO_FN | 8/4 | +248 | +136 | EngineAdapterQueryExtendedInfo 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。 |
| IdentifyAll | PIBIO_ENGINE_IDENTIFY_ALL_FN | 8/4 | +256 | +140 | EngineAdapterIdentifyAll 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。 |
| SetEnrollmentSelector | PIBIO_ENGINE_SET_ENROLLMENT_SELECTOR_FN | 8/4 | +264 | +144 | EngineAdapterSetEnrollmentSelector 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。 |
| SetEnrollmentParameters | PIBIO_ENGINE_SET_ENROLLMENT_PARAMETERS_FN | 8/4 | +272 | +148 | EngineAdapterSetEnrollmentParameters 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。 |
| QueryExtendedEnrollmentStatus | PIBIO_ENGINE_QUERY_EXTENDED_ENROLLMENT_STATUS_FN | 8/4 | +280 | +152 | EngineAdapterQueryExtendedEnrollmentStatus 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。 |
| RefreshCache | PIBIO_ENGINE_REFRESH_CACHE_FN | 8/4 | +288 | +156 | EngineAdapterRefreshCache 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。 |
| SelectCalibrationFormat | PIBIO_ENGINE_SELECT_CALIBRATION_FORMAT_FN | 8/4 | +296 | +160 | EngineAdapterSelectCalibrationFormat 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。 |
| QueryCalibrationData | PIBIO_ENGINE_QUERY_CALIBRATION_DATA_FN | 8/4 | +304 | +164 | EngineAdapterQueryCalibrationData 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。 |
| SetAccountPolicy | PIBIO_ENGINE_SET_ACCOUNT_POLICY_FN | 8/4 | +312 | +168 | EngineAdapterSetAccountPolicy 関数の実装へのポインターです。このメンバーは Windows 10 以降でサポートされます。 |
| CreateKey | PIBIO_ENGINE_CREATE_KEY_FN | 8/4 | +320 | +172 | EngineAdapterCreateKey 関数の実装へのポインターです。このメンバーは Windows 10 バージョン 1607 以降でサポートされます。 |
| IdentifyFeatureSetSecure | PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN | 8/4 | +328 | +176 | EngineAdapterIdentifyFeatureSetSecure 関数の実装へのポインターです。このメンバーは Windows 10 バージョン 1607 以降でサポートされます。 |
| AcceptPrivateSensorTypeInfo | PIBIO_ENGINE_ACCEPT_PRIVATE_SENSOR_TYPE_INFO_FN | 8/4 | +336 | +180 | プライベートセンサ種別情報を受け取る関数ポインタ。 |
| CreateEnrollmentAuthenticated | PIBIO_ENGINE_CREATE_ENROLLMENT_AUTHENTICATED_FN | 8/4 | +344 | +184 | 認証付きで新規登録を作成する関数ポインタ。 |
| IdentifyFeatureSetAuthenticated | PIBIO_ENGINE_IDENTIFY_FEATURE_SET_AUTHENTICATED_FN | 8/4 | +352 | +188 | 認証付きで特徴量の識別を行う関数ポインタ。 |
公式ドキュメント
WINBIO_ENGINE_INTERFACE 構造体は、カスタムエンジンアダプター関数へのポインターを保持します。Windows Biometric Framework は、この構造体を使用してそれらの関数を特定します。
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 Structureimport 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: pointerstruct 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