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

WINBIO_FRAMEWORK_INTERFACE

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

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

フィールド

フィールドサイズx64x86説明
VersionWINBIO_ADAPTER_INTERFACE_VERSION4+0+0このフレームワークインターフェースのバージョン。
TypeDWORD4+4+4インターフェースの種別を示す値。
SizeUINT_PTR8/4+8+8この構造体のサイズ(バイト)。
AdapterIdGUID16+16+12フレームワークを識別するGUID。
SetUnitStatusPIBIO_FRAMEWORK_SET_UNIT_STATUS_FN8/4+32+28ユニットの状態を設定する関数ポインタ。
VsmStorageAttachPIBIO_STORAGE_ATTACH_FN8/4+40+32VSM内ストレージへのアタッチを行う関数ポインタ。
VsmStorageDetachPIBIO_STORAGE_DETACH_FN8/4+48+36VSM内ストレージからのデタッチを行う関数ポインタ。
VsmStorageClearContextPIBIO_STORAGE_CLEAR_CONTEXT_FN8/4+56+40VSMストレージのコンテキストをクリアする関数ポインタ。
VsmStorageCreateDatabasePIBIO_STORAGE_CREATE_DATABASE_FN8/4+64+44VSM内にデータベースを作成する関数ポインタ。
VsmStorageOpenDatabasePIBIO_STORAGE_OPEN_DATABASE_FN8/4+72+48VSM内データベースを開く関数ポインタ。
VsmStorageCloseDatabasePIBIO_STORAGE_CLOSE_DATABASE_FN8/4+80+52VSM内データベースを閉じる関数ポインタ。
VsmStorageDeleteRecordPIBIO_STORAGE_DELETE_RECORD_FN8/4+88+56VSM内データベースのレコードを削除する関数ポインタ。
VsmStorageNotifyPowerChangePIBIO_STORAGE_NOTIFY_POWER_CHANGE_FN8/4+96+60VSMストレージへ電源変化を通知する関数ポインタ。
VsmStoragePipelineInitPIBIO_STORAGE_PIPELINE_INIT_FN8/4+104+64VSMストレージのパイプラインを初期化する関数ポインタ。
VsmStoragePipelineCleanupPIBIO_STORAGE_PIPELINE_CLEANUP_FN8/4+112+68VSMストレージのパイプラインを後始末する関数ポインタ。
VsmStorageActivatePIBIO_STORAGE_ACTIVATE_FN8/4+120+72VSMストレージを有効化する関数ポインタ。
VsmStorageDeactivatePIBIO_STORAGE_DEACTIVATE_FN8/4+128+76VSMストレージを無効化する関数ポインタ。
VsmStorageQueryExtendedInfoPIBIO_STORAGE_QUERY_EXTENDED_INFO_FN8/4+136+80VSMストレージの拡張情報を問い合わせる関数ポインタ。
VsmStorageCacheClearPIBIO_FRAMEWORK_VSM_CACHE_CLEAR_FN8/4+144+84VSMストレージキャッシュをクリアする関数ポインタ。
VsmStorageCacheImportBeginPIBIO_FRAMEWORK_VSM_CACHE_IMPORT_BEGIN_FN8/4+152+88VSMキャッシュインポートを開始する関数ポインタ。
VsmStorageCacheImportNextPIBIO_FRAMEWORK_VSM_CACHE_IMPORT_NEXT_FN8/4+160+92VSMキャッシュインポートの次項目を処理する関数ポインタ。
VsmStorageCacheImportEndPIBIO_FRAMEWORK_VSM_CACHE_IMPORT_END_FN8/4+168+96VSMキャッシュインポートを終了する関数ポインタ。
VsmStorageCacheExportBeginPIBIO_FRAMEWORK_VSM_CACHE_EXPORT_BEGIN_FN8/4+176+100VSMキャッシュエクスポートを開始する関数ポインタ。
VsmStorageCacheExportNextPIBIO_FRAMEWORK_VSM_CACHE_EXPORT_NEXT_FN8/4+184+104VSMキャッシュエクスポートの次項目を処理する関数ポインタ。
VsmStorageCacheExportEndPIBIO_FRAMEWORK_VSM_CACHE_EXPORT_END_FN8/4+192+108VSMキャッシュエクスポートを終了する関数ポインタ。
VsmSensorAttachPIBIO_SENSOR_ATTACH_FN8/4+200+112VSM内センサへのアタッチを行う関数ポインタ。
VsmSensorDetachPIBIO_SENSOR_DETACH_FN8/4+208+116VSM内センサからのデタッチを行う関数ポインタ。
VsmSensorClearContextPIBIO_SENSOR_CLEAR_CONTEXT_FN8/4+216+120VSMセンサのコンテキストをクリアする関数ポインタ。
VsmSensorPushDataToEnginePIBIO_SENSOR_PUSH_DATA_TO_ENGINE_FN8/4+224+124VSMセンサのデータをエンジンへ送る関数ポインタ。
VsmSensorNotifyPowerChangePIBIO_SENSOR_NOTIFY_POWER_CHANGE_FN8/4+232+128VSMセンサへ電源変化を通知する関数ポインタ。
VsmSensorPipelineInitPIBIO_SENSOR_PIPELINE_INIT_FN8/4+240+132VSMセンサのパイプラインを初期化する関数ポインタ。
VsmSensorPipelineCleanupPIBIO_SENSOR_PIPELINE_CLEANUP_FN8/4+248+136VSMセンサのパイプラインを後始末する関数ポインタ。
VsmSensorActivatePIBIO_SENSOR_ACTIVATE_FN8/4+256+140VSMセンサを有効化する関数ポインタ。
VsmSensorDeactivatePIBIO_SENSOR_DEACTIVATE_FN8/4+264+144VSMセンサを無効化する関数ポインタ。
VsmSensorAsyncImportRawBufferPIBIO_SENSOR_ASYNC_IMPORT_RAW_BUFFER_FN8/4+272+148VSMセンサの生バッファを非同期にインポートする関数ポインタ。
VsmSensorAsyncImportSecureBufferPIBIO_SENSOR_ASYNC_IMPORT_SECURE_BUFFER_FN8/4+280+152VSMセンサのセキュアバッファを非同期にインポートする関数ポインタ。
Reserved1PIBIO_FRAMEWORK_VSM_STORAGE_RESERVED_1_FN8/4+288+156将来の拡張用に予約された関数ポインタ。
Reserved2PIBIO_FRAMEWORK_VSM_STORAGE_RESERVED_2_FN8/4+296+160将来の拡張用に予約された関数ポインタ。
Reserved3PIBIO_FRAMEWORK_VSM_STORAGE_RESERVED_3_FN8/4+304+164将来の拡張用に予約された関数ポインタ。
Reserved4PIBIO_STORAGE_RESERVED_1_FN8/4+312+168将来の拡張用に予約された関数ポインタ。
Reserved5PIBIO_STORAGE_RESERVED_2_FN8/4+320+172将来の拡張用に予約された関数ポインタ。
AllocateMemoryPIBIO_FRAMEWORK_ALLOCATE_MEMORY_FN8/4+328+176フレームワーク管理のメモリを確保する関数ポインタ。
FreeMemoryPIBIO_FRAMEWORK_FREE_MEMORY_FN8/4+336+180確保したメモリを解放する関数ポインタ。
GetPropertyPIBIO_FRAMEWORK_GET_PROPERTY_FN8/4+344+184フレームワークのプロパティを取得する関数ポインタ。
LockAndValidateSecureBufferPIBIO_FRAMEWORK_LOCK_AND_VALIDATE_SECURE_BUFFER_FN8/4+352+188セキュアバッファをロックし検証する関数ポインタ。
ReleaseSecureBufferPIBIO_FRAMEWORK_RELEASE_SECURE_BUFFER_FN8/4+360+192セキュアバッファを解放する関数ポインタ。
QueryAuthorizedEnrollmentsPIBIO_FRAMEWORK_VSM_QUERY_AUTHORIZED_ENROLLMENTS_FN8/4+368+196認可済み登録を問い合わせる関数ポインタ。
DecryptSamplePIBIO_FRAMEWORK_VSM_DECRYPT_SAMPLE_FN8/4+376+200暗号化されたサンプルを復号する関数ポインタ。

各言語での定義

#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_FRAMEWORK_INTERFACE  (x64 384 / x86 204 バイト)
typedef struct WINBIO_FRAMEWORK_INTERFACE {
    WINBIO_ADAPTER_INTERFACE_VERSION Version;
    DWORD Type;
    UINT_PTR Size;
    GUID AdapterId;
    PIBIO_FRAMEWORK_SET_UNIT_STATUS_FN SetUnitStatus;
    PIBIO_STORAGE_ATTACH_FN VsmStorageAttach;
    PIBIO_STORAGE_DETACH_FN VsmStorageDetach;
    PIBIO_STORAGE_CLEAR_CONTEXT_FN VsmStorageClearContext;
    PIBIO_STORAGE_CREATE_DATABASE_FN VsmStorageCreateDatabase;
    PIBIO_STORAGE_OPEN_DATABASE_FN VsmStorageOpenDatabase;
    PIBIO_STORAGE_CLOSE_DATABASE_FN VsmStorageCloseDatabase;
    PIBIO_STORAGE_DELETE_RECORD_FN VsmStorageDeleteRecord;
    PIBIO_STORAGE_NOTIFY_POWER_CHANGE_FN VsmStorageNotifyPowerChange;
    PIBIO_STORAGE_PIPELINE_INIT_FN VsmStoragePipelineInit;
    PIBIO_STORAGE_PIPELINE_CLEANUP_FN VsmStoragePipelineCleanup;
    PIBIO_STORAGE_ACTIVATE_FN VsmStorageActivate;
    PIBIO_STORAGE_DEACTIVATE_FN VsmStorageDeactivate;
    PIBIO_STORAGE_QUERY_EXTENDED_INFO_FN VsmStorageQueryExtendedInfo;
    PIBIO_FRAMEWORK_VSM_CACHE_CLEAR_FN VsmStorageCacheClear;
    PIBIO_FRAMEWORK_VSM_CACHE_IMPORT_BEGIN_FN VsmStorageCacheImportBegin;
    PIBIO_FRAMEWORK_VSM_CACHE_IMPORT_NEXT_FN VsmStorageCacheImportNext;
    PIBIO_FRAMEWORK_VSM_CACHE_IMPORT_END_FN VsmStorageCacheImportEnd;
    PIBIO_FRAMEWORK_VSM_CACHE_EXPORT_BEGIN_FN VsmStorageCacheExportBegin;
    PIBIO_FRAMEWORK_VSM_CACHE_EXPORT_NEXT_FN VsmStorageCacheExportNext;
    PIBIO_FRAMEWORK_VSM_CACHE_EXPORT_END_FN VsmStorageCacheExportEnd;
    PIBIO_SENSOR_ATTACH_FN VsmSensorAttach;
    PIBIO_SENSOR_DETACH_FN VsmSensorDetach;
    PIBIO_SENSOR_CLEAR_CONTEXT_FN VsmSensorClearContext;
    PIBIO_SENSOR_PUSH_DATA_TO_ENGINE_FN VsmSensorPushDataToEngine;
    PIBIO_SENSOR_NOTIFY_POWER_CHANGE_FN VsmSensorNotifyPowerChange;
    PIBIO_SENSOR_PIPELINE_INIT_FN VsmSensorPipelineInit;
    PIBIO_SENSOR_PIPELINE_CLEANUP_FN VsmSensorPipelineCleanup;
    PIBIO_SENSOR_ACTIVATE_FN VsmSensorActivate;
    PIBIO_SENSOR_DEACTIVATE_FN VsmSensorDeactivate;
    PIBIO_SENSOR_ASYNC_IMPORT_RAW_BUFFER_FN VsmSensorAsyncImportRawBuffer;
    PIBIO_SENSOR_ASYNC_IMPORT_SECURE_BUFFER_FN VsmSensorAsyncImportSecureBuffer;
    PIBIO_FRAMEWORK_VSM_STORAGE_RESERVED_1_FN Reserved1;
    PIBIO_FRAMEWORK_VSM_STORAGE_RESERVED_2_FN Reserved2;
    PIBIO_FRAMEWORK_VSM_STORAGE_RESERVED_3_FN Reserved3;
    PIBIO_STORAGE_RESERVED_1_FN Reserved4;
    PIBIO_STORAGE_RESERVED_2_FN Reserved5;
    PIBIO_FRAMEWORK_ALLOCATE_MEMORY_FN AllocateMemory;
    PIBIO_FRAMEWORK_FREE_MEMORY_FN FreeMemory;
    PIBIO_FRAMEWORK_GET_PROPERTY_FN GetProperty;
    PIBIO_FRAMEWORK_LOCK_AND_VALIDATE_SECURE_BUFFER_FN LockAndValidateSecureBuffer;
    PIBIO_FRAMEWORK_RELEASE_SECURE_BUFFER_FN ReleaseSecureBuffer;
    PIBIO_FRAMEWORK_VSM_QUERY_AUTHORIZED_ENROLLMENTS_FN QueryAuthorizedEnrollments;
    PIBIO_FRAMEWORK_VSM_DECRYPT_SAMPLE_FN DecryptSample;
} WINBIO_FRAMEWORK_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_FRAMEWORK_INTERFACE
{
    public WINBIO_ADAPTER_INTERFACE_VERSION Version;
    public uint Type;
    public UIntPtr Size;
    public Guid AdapterId;
    public IntPtr SetUnitStatus;
    public IntPtr VsmStorageAttach;
    public IntPtr VsmStorageDetach;
    public IntPtr VsmStorageClearContext;
    public IntPtr VsmStorageCreateDatabase;
    public IntPtr VsmStorageOpenDatabase;
    public IntPtr VsmStorageCloseDatabase;
    public IntPtr VsmStorageDeleteRecord;
    public IntPtr VsmStorageNotifyPowerChange;
    public IntPtr VsmStoragePipelineInit;
    public IntPtr VsmStoragePipelineCleanup;
    public IntPtr VsmStorageActivate;
    public IntPtr VsmStorageDeactivate;
    public IntPtr VsmStorageQueryExtendedInfo;
    public IntPtr VsmStorageCacheClear;
    public IntPtr VsmStorageCacheImportBegin;
    public IntPtr VsmStorageCacheImportNext;
    public IntPtr VsmStorageCacheImportEnd;
    public IntPtr VsmStorageCacheExportBegin;
    public IntPtr VsmStorageCacheExportNext;
    public IntPtr VsmStorageCacheExportEnd;
    public IntPtr VsmSensorAttach;
    public IntPtr VsmSensorDetach;
    public IntPtr VsmSensorClearContext;
    public IntPtr VsmSensorPushDataToEngine;
    public IntPtr VsmSensorNotifyPowerChange;
    public IntPtr VsmSensorPipelineInit;
    public IntPtr VsmSensorPipelineCleanup;
    public IntPtr VsmSensorActivate;
    public IntPtr VsmSensorDeactivate;
    public IntPtr VsmSensorAsyncImportRawBuffer;
    public IntPtr VsmSensorAsyncImportSecureBuffer;
    public IntPtr Reserved1;
    public IntPtr Reserved2;
    public IntPtr Reserved3;
    public IntPtr Reserved4;
    public IntPtr Reserved5;
    public IntPtr AllocateMemory;
    public IntPtr FreeMemory;
    public IntPtr GetProperty;
    public IntPtr LockAndValidateSecureBuffer;
    public IntPtr ReleaseSecureBuffer;
    public IntPtr QueryAuthorizedEnrollments;
    public IntPtr DecryptSample;
}
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_FRAMEWORK_INTERFACE
    Public Version As WINBIO_ADAPTER_INTERFACE_VERSION
    Public Type As UInteger
    Public Size As UIntPtr
    Public AdapterId As Guid
    Public SetUnitStatus As IntPtr
    Public VsmStorageAttach As IntPtr
    Public VsmStorageDetach As IntPtr
    Public VsmStorageClearContext As IntPtr
    Public VsmStorageCreateDatabase As IntPtr
    Public VsmStorageOpenDatabase As IntPtr
    Public VsmStorageCloseDatabase As IntPtr
    Public VsmStorageDeleteRecord As IntPtr
    Public VsmStorageNotifyPowerChange As IntPtr
    Public VsmStoragePipelineInit As IntPtr
    Public VsmStoragePipelineCleanup As IntPtr
    Public VsmStorageActivate As IntPtr
    Public VsmStorageDeactivate As IntPtr
    Public VsmStorageQueryExtendedInfo As IntPtr
    Public VsmStorageCacheClear As IntPtr
    Public VsmStorageCacheImportBegin As IntPtr
    Public VsmStorageCacheImportNext As IntPtr
    Public VsmStorageCacheImportEnd As IntPtr
    Public VsmStorageCacheExportBegin As IntPtr
    Public VsmStorageCacheExportNext As IntPtr
    Public VsmStorageCacheExportEnd As IntPtr
    Public VsmSensorAttach As IntPtr
    Public VsmSensorDetach As IntPtr
    Public VsmSensorClearContext As IntPtr
    Public VsmSensorPushDataToEngine As IntPtr
    Public VsmSensorNotifyPowerChange As IntPtr
    Public VsmSensorPipelineInit As IntPtr
    Public VsmSensorPipelineCleanup As IntPtr
    Public VsmSensorActivate As IntPtr
    Public VsmSensorDeactivate As IntPtr
    Public VsmSensorAsyncImportRawBuffer As IntPtr
    Public VsmSensorAsyncImportSecureBuffer As IntPtr
    Public Reserved1 As IntPtr
    Public Reserved2 As IntPtr
    Public Reserved3 As IntPtr
    Public Reserved4 As IntPtr
    Public Reserved5 As IntPtr
    Public AllocateMemory As IntPtr
    Public FreeMemory As IntPtr
    Public GetProperty As IntPtr
    Public LockAndValidateSecureBuffer As IntPtr
    Public ReleaseSecureBuffer As IntPtr
    Public QueryAuthorizedEnrollments As IntPtr
    Public DecryptSample 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_FRAMEWORK_INTERFACE(ctypes.Structure):
    _fields_ = [
        ("Version", WINBIO_ADAPTER_INTERFACE_VERSION),
        ("Type", wintypes.DWORD),
        ("Size", ctypes.c_size_t),
        ("AdapterId", GUID),
        ("SetUnitStatus", ctypes.c_void_p),
        ("VsmStorageAttach", ctypes.c_void_p),
        ("VsmStorageDetach", ctypes.c_void_p),
        ("VsmStorageClearContext", ctypes.c_void_p),
        ("VsmStorageCreateDatabase", ctypes.c_void_p),
        ("VsmStorageOpenDatabase", ctypes.c_void_p),
        ("VsmStorageCloseDatabase", ctypes.c_void_p),
        ("VsmStorageDeleteRecord", ctypes.c_void_p),
        ("VsmStorageNotifyPowerChange", ctypes.c_void_p),
        ("VsmStoragePipelineInit", ctypes.c_void_p),
        ("VsmStoragePipelineCleanup", ctypes.c_void_p),
        ("VsmStorageActivate", ctypes.c_void_p),
        ("VsmStorageDeactivate", ctypes.c_void_p),
        ("VsmStorageQueryExtendedInfo", ctypes.c_void_p),
        ("VsmStorageCacheClear", ctypes.c_void_p),
        ("VsmStorageCacheImportBegin", ctypes.c_void_p),
        ("VsmStorageCacheImportNext", ctypes.c_void_p),
        ("VsmStorageCacheImportEnd", ctypes.c_void_p),
        ("VsmStorageCacheExportBegin", ctypes.c_void_p),
        ("VsmStorageCacheExportNext", ctypes.c_void_p),
        ("VsmStorageCacheExportEnd", ctypes.c_void_p),
        ("VsmSensorAttach", ctypes.c_void_p),
        ("VsmSensorDetach", ctypes.c_void_p),
        ("VsmSensorClearContext", ctypes.c_void_p),
        ("VsmSensorPushDataToEngine", ctypes.c_void_p),
        ("VsmSensorNotifyPowerChange", ctypes.c_void_p),
        ("VsmSensorPipelineInit", ctypes.c_void_p),
        ("VsmSensorPipelineCleanup", ctypes.c_void_p),
        ("VsmSensorActivate", ctypes.c_void_p),
        ("VsmSensorDeactivate", ctypes.c_void_p),
        ("VsmSensorAsyncImportRawBuffer", ctypes.c_void_p),
        ("VsmSensorAsyncImportSecureBuffer", ctypes.c_void_p),
        ("Reserved1", ctypes.c_void_p),
        ("Reserved2", ctypes.c_void_p),
        ("Reserved3", ctypes.c_void_p),
        ("Reserved4", ctypes.c_void_p),
        ("Reserved5", ctypes.c_void_p),
        ("AllocateMemory", ctypes.c_void_p),
        ("FreeMemory", ctypes.c_void_p),
        ("GetProperty", ctypes.c_void_p),
        ("LockAndValidateSecureBuffer", ctypes.c_void_p),
        ("ReleaseSecureBuffer", ctypes.c_void_p),
        ("QueryAuthorizedEnrollments", ctypes.c_void_p),
        ("DecryptSample", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct WINBIO_ADAPTER_INTERFACE_VERSION {
    pub MajorVersion: u16,
    pub MinorVersion: u16,
}

#[repr(C)]
pub struct WINBIO_FRAMEWORK_INTERFACE {
    pub Version: WINBIO_ADAPTER_INTERFACE_VERSION,
    pub Type: u32,
    pub Size: usize,
    pub AdapterId: GUID,
    pub SetUnitStatus: *mut core::ffi::c_void,
    pub VsmStorageAttach: *mut core::ffi::c_void,
    pub VsmStorageDetach: *mut core::ffi::c_void,
    pub VsmStorageClearContext: *mut core::ffi::c_void,
    pub VsmStorageCreateDatabase: *mut core::ffi::c_void,
    pub VsmStorageOpenDatabase: *mut core::ffi::c_void,
    pub VsmStorageCloseDatabase: *mut core::ffi::c_void,
    pub VsmStorageDeleteRecord: *mut core::ffi::c_void,
    pub VsmStorageNotifyPowerChange: *mut core::ffi::c_void,
    pub VsmStoragePipelineInit: *mut core::ffi::c_void,
    pub VsmStoragePipelineCleanup: *mut core::ffi::c_void,
    pub VsmStorageActivate: *mut core::ffi::c_void,
    pub VsmStorageDeactivate: *mut core::ffi::c_void,
    pub VsmStorageQueryExtendedInfo: *mut core::ffi::c_void,
    pub VsmStorageCacheClear: *mut core::ffi::c_void,
    pub VsmStorageCacheImportBegin: *mut core::ffi::c_void,
    pub VsmStorageCacheImportNext: *mut core::ffi::c_void,
    pub VsmStorageCacheImportEnd: *mut core::ffi::c_void,
    pub VsmStorageCacheExportBegin: *mut core::ffi::c_void,
    pub VsmStorageCacheExportNext: *mut core::ffi::c_void,
    pub VsmStorageCacheExportEnd: *mut core::ffi::c_void,
    pub VsmSensorAttach: *mut core::ffi::c_void,
    pub VsmSensorDetach: *mut core::ffi::c_void,
    pub VsmSensorClearContext: *mut core::ffi::c_void,
    pub VsmSensorPushDataToEngine: *mut core::ffi::c_void,
    pub VsmSensorNotifyPowerChange: *mut core::ffi::c_void,
    pub VsmSensorPipelineInit: *mut core::ffi::c_void,
    pub VsmSensorPipelineCleanup: *mut core::ffi::c_void,
    pub VsmSensorActivate: *mut core::ffi::c_void,
    pub VsmSensorDeactivate: *mut core::ffi::c_void,
    pub VsmSensorAsyncImportRawBuffer: *mut core::ffi::c_void,
    pub VsmSensorAsyncImportSecureBuffer: *mut core::ffi::c_void,
    pub Reserved1: *mut core::ffi::c_void,
    pub Reserved2: *mut core::ffi::c_void,
    pub Reserved3: *mut core::ffi::c_void,
    pub Reserved4: *mut core::ffi::c_void,
    pub Reserved5: *mut core::ffi::c_void,
    pub AllocateMemory: *mut core::ffi::c_void,
    pub FreeMemory: *mut core::ffi::c_void,
    pub GetProperty: *mut core::ffi::c_void,
    pub LockAndValidateSecureBuffer: *mut core::ffi::c_void,
    pub ReleaseSecureBuffer: *mut core::ffi::c_void,
    pub QueryAuthorizedEnrollments: *mut core::ffi::c_void,
    pub DecryptSample: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type WINBIO_ADAPTER_INTERFACE_VERSION struct {
	MajorVersion uint16
	MinorVersion uint16
}

type WINBIO_FRAMEWORK_INTERFACE struct {
	Version WINBIO_ADAPTER_INTERFACE_VERSION
	Type uint32
	Size uintptr
	AdapterId windows.GUID
	SetUnitStatus uintptr
	VsmStorageAttach uintptr
	VsmStorageDetach uintptr
	VsmStorageClearContext uintptr
	VsmStorageCreateDatabase uintptr
	VsmStorageOpenDatabase uintptr
	VsmStorageCloseDatabase uintptr
	VsmStorageDeleteRecord uintptr
	VsmStorageNotifyPowerChange uintptr
	VsmStoragePipelineInit uintptr
	VsmStoragePipelineCleanup uintptr
	VsmStorageActivate uintptr
	VsmStorageDeactivate uintptr
	VsmStorageQueryExtendedInfo uintptr
	VsmStorageCacheClear uintptr
	VsmStorageCacheImportBegin uintptr
	VsmStorageCacheImportNext uintptr
	VsmStorageCacheImportEnd uintptr
	VsmStorageCacheExportBegin uintptr
	VsmStorageCacheExportNext uintptr
	VsmStorageCacheExportEnd uintptr
	VsmSensorAttach uintptr
	VsmSensorDetach uintptr
	VsmSensorClearContext uintptr
	VsmSensorPushDataToEngine uintptr
	VsmSensorNotifyPowerChange uintptr
	VsmSensorPipelineInit uintptr
	VsmSensorPipelineCleanup uintptr
	VsmSensorActivate uintptr
	VsmSensorDeactivate uintptr
	VsmSensorAsyncImportRawBuffer uintptr
	VsmSensorAsyncImportSecureBuffer uintptr
	Reserved1 uintptr
	Reserved2 uintptr
	Reserved3 uintptr
	Reserved4 uintptr
	Reserved5 uintptr
	AllocateMemory uintptr
	FreeMemory uintptr
	GetProperty uintptr
	LockAndValidateSecureBuffer uintptr
	ReleaseSecureBuffer uintptr
	QueryAuthorizedEnrollments uintptr
	DecryptSample uintptr
}
type
  WINBIO_ADAPTER_INTERFACE_VERSION = record
    MajorVersion: Word;
    MinorVersion: Word;
  end;

  WINBIO_FRAMEWORK_INTERFACE = record
    Version: WINBIO_ADAPTER_INTERFACE_VERSION;
    Type: DWORD;
    Size: NativeUInt;
    AdapterId: TGUID;
    SetUnitStatus: Pointer;
    VsmStorageAttach: Pointer;
    VsmStorageDetach: Pointer;
    VsmStorageClearContext: Pointer;
    VsmStorageCreateDatabase: Pointer;
    VsmStorageOpenDatabase: Pointer;
    VsmStorageCloseDatabase: Pointer;
    VsmStorageDeleteRecord: Pointer;
    VsmStorageNotifyPowerChange: Pointer;
    VsmStoragePipelineInit: Pointer;
    VsmStoragePipelineCleanup: Pointer;
    VsmStorageActivate: Pointer;
    VsmStorageDeactivate: Pointer;
    VsmStorageQueryExtendedInfo: Pointer;
    VsmStorageCacheClear: Pointer;
    VsmStorageCacheImportBegin: Pointer;
    VsmStorageCacheImportNext: Pointer;
    VsmStorageCacheImportEnd: Pointer;
    VsmStorageCacheExportBegin: Pointer;
    VsmStorageCacheExportNext: Pointer;
    VsmStorageCacheExportEnd: Pointer;
    VsmSensorAttach: Pointer;
    VsmSensorDetach: Pointer;
    VsmSensorClearContext: Pointer;
    VsmSensorPushDataToEngine: Pointer;
    VsmSensorNotifyPowerChange: Pointer;
    VsmSensorPipelineInit: Pointer;
    VsmSensorPipelineCleanup: Pointer;
    VsmSensorActivate: Pointer;
    VsmSensorDeactivate: Pointer;
    VsmSensorAsyncImportRawBuffer: Pointer;
    VsmSensorAsyncImportSecureBuffer: Pointer;
    Reserved1: Pointer;
    Reserved2: Pointer;
    Reserved3: Pointer;
    Reserved4: Pointer;
    Reserved5: Pointer;
    AllocateMemory: Pointer;
    FreeMemory: Pointer;
    GetProperty: Pointer;
    LockAndValidateSecureBuffer: Pointer;
    ReleaseSecureBuffer: Pointer;
    QueryAuthorizedEnrollments: Pointer;
    DecryptSample: Pointer;
  end;
const WINBIO_ADAPTER_INTERFACE_VERSION = extern struct {
    MajorVersion: u16,
    MinorVersion: u16,
};

const WINBIO_FRAMEWORK_INTERFACE = extern struct {
    Version: WINBIO_ADAPTER_INTERFACE_VERSION,
    Type: u32,
    Size: usize,
    AdapterId: GUID,
    SetUnitStatus: ?*anyopaque,
    VsmStorageAttach: ?*anyopaque,
    VsmStorageDetach: ?*anyopaque,
    VsmStorageClearContext: ?*anyopaque,
    VsmStorageCreateDatabase: ?*anyopaque,
    VsmStorageOpenDatabase: ?*anyopaque,
    VsmStorageCloseDatabase: ?*anyopaque,
    VsmStorageDeleteRecord: ?*anyopaque,
    VsmStorageNotifyPowerChange: ?*anyopaque,
    VsmStoragePipelineInit: ?*anyopaque,
    VsmStoragePipelineCleanup: ?*anyopaque,
    VsmStorageActivate: ?*anyopaque,
    VsmStorageDeactivate: ?*anyopaque,
    VsmStorageQueryExtendedInfo: ?*anyopaque,
    VsmStorageCacheClear: ?*anyopaque,
    VsmStorageCacheImportBegin: ?*anyopaque,
    VsmStorageCacheImportNext: ?*anyopaque,
    VsmStorageCacheImportEnd: ?*anyopaque,
    VsmStorageCacheExportBegin: ?*anyopaque,
    VsmStorageCacheExportNext: ?*anyopaque,
    VsmStorageCacheExportEnd: ?*anyopaque,
    VsmSensorAttach: ?*anyopaque,
    VsmSensorDetach: ?*anyopaque,
    VsmSensorClearContext: ?*anyopaque,
    VsmSensorPushDataToEngine: ?*anyopaque,
    VsmSensorNotifyPowerChange: ?*anyopaque,
    VsmSensorPipelineInit: ?*anyopaque,
    VsmSensorPipelineCleanup: ?*anyopaque,
    VsmSensorActivate: ?*anyopaque,
    VsmSensorDeactivate: ?*anyopaque,
    VsmSensorAsyncImportRawBuffer: ?*anyopaque,
    VsmSensorAsyncImportSecureBuffer: ?*anyopaque,
    Reserved1: ?*anyopaque,
    Reserved2: ?*anyopaque,
    Reserved3: ?*anyopaque,
    Reserved4: ?*anyopaque,
    Reserved5: ?*anyopaque,
    AllocateMemory: ?*anyopaque,
    FreeMemory: ?*anyopaque,
    GetProperty: ?*anyopaque,
    LockAndValidateSecureBuffer: ?*anyopaque,
    ReleaseSecureBuffer: ?*anyopaque,
    QueryAuthorizedEnrollments: ?*anyopaque,
    DecryptSample: ?*anyopaque,
};
type
  WINBIO_ADAPTER_INTERFACE_VERSION {.bycopy.} = object
    MajorVersion: uint16
    MinorVersion: uint16

  WINBIO_FRAMEWORK_INTERFACE {.bycopy.} = object
    Version: WINBIO_ADAPTER_INTERFACE_VERSION
    Type: uint32
    Size: uint
    AdapterId: GUID
    SetUnitStatus: pointer
    VsmStorageAttach: pointer
    VsmStorageDetach: pointer
    VsmStorageClearContext: pointer
    VsmStorageCreateDatabase: pointer
    VsmStorageOpenDatabase: pointer
    VsmStorageCloseDatabase: pointer
    VsmStorageDeleteRecord: pointer
    VsmStorageNotifyPowerChange: pointer
    VsmStoragePipelineInit: pointer
    VsmStoragePipelineCleanup: pointer
    VsmStorageActivate: pointer
    VsmStorageDeactivate: pointer
    VsmStorageQueryExtendedInfo: pointer
    VsmStorageCacheClear: pointer
    VsmStorageCacheImportBegin: pointer
    VsmStorageCacheImportNext: pointer
    VsmStorageCacheImportEnd: pointer
    VsmStorageCacheExportBegin: pointer
    VsmStorageCacheExportNext: pointer
    VsmStorageCacheExportEnd: pointer
    VsmSensorAttach: pointer
    VsmSensorDetach: pointer
    VsmSensorClearContext: pointer
    VsmSensorPushDataToEngine: pointer
    VsmSensorNotifyPowerChange: pointer
    VsmSensorPipelineInit: pointer
    VsmSensorPipelineCleanup: pointer
    VsmSensorActivate: pointer
    VsmSensorDeactivate: pointer
    VsmSensorAsyncImportRawBuffer: pointer
    VsmSensorAsyncImportSecureBuffer: pointer
    Reserved1: pointer
    Reserved2: pointer
    Reserved3: pointer
    Reserved4: pointer
    Reserved5: pointer
    AllocateMemory: pointer
    FreeMemory: pointer
    GetProperty: pointer
    LockAndValidateSecureBuffer: pointer
    ReleaseSecureBuffer: pointer
    QueryAuthorizedEnrollments: pointer
    DecryptSample: pointer
struct WINBIO_ADAPTER_INTERFACE_VERSION
{
    ushort MajorVersion;
    ushort MinorVersion;
}

struct WINBIO_FRAMEWORK_INTERFACE
{
    WINBIO_ADAPTER_INTERFACE_VERSION Version;
    uint Type;
    size_t Size;
    GUID AdapterId;
    void* SetUnitStatus;
    void* VsmStorageAttach;
    void* VsmStorageDetach;
    void* VsmStorageClearContext;
    void* VsmStorageCreateDatabase;
    void* VsmStorageOpenDatabase;
    void* VsmStorageCloseDatabase;
    void* VsmStorageDeleteRecord;
    void* VsmStorageNotifyPowerChange;
    void* VsmStoragePipelineInit;
    void* VsmStoragePipelineCleanup;
    void* VsmStorageActivate;
    void* VsmStorageDeactivate;
    void* VsmStorageQueryExtendedInfo;
    void* VsmStorageCacheClear;
    void* VsmStorageCacheImportBegin;
    void* VsmStorageCacheImportNext;
    void* VsmStorageCacheImportEnd;
    void* VsmStorageCacheExportBegin;
    void* VsmStorageCacheExportNext;
    void* VsmStorageCacheExportEnd;
    void* VsmSensorAttach;
    void* VsmSensorDetach;
    void* VsmSensorClearContext;
    void* VsmSensorPushDataToEngine;
    void* VsmSensorNotifyPowerChange;
    void* VsmSensorPipelineInit;
    void* VsmSensorPipelineCleanup;
    void* VsmSensorActivate;
    void* VsmSensorDeactivate;
    void* VsmSensorAsyncImportRawBuffer;
    void* VsmSensorAsyncImportSecureBuffer;
    void* Reserved1;
    void* Reserved2;
    void* Reserved3;
    void* Reserved4;
    void* Reserved5;
    void* AllocateMemory;
    void* FreeMemory;
    void* GetProperty;
    void* LockAndValidateSecureBuffer;
    void* ReleaseSecureBuffer;
    void* QueryAuthorizedEnrollments;
    void* DecryptSample;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; WINBIO_FRAMEWORK_INTERFACE サイズ: 204 バイト(x86)
dim st, 51    ; 4byte整数×51(構造体サイズ 204 / 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:入れ子/配列)
; SetUnitStatus : PIBIO_FRAMEWORK_SET_UNIT_STATUS_FN (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; VsmStorageAttach : PIBIO_STORAGE_ATTACH_FN (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; VsmStorageDetach : PIBIO_STORAGE_DETACH_FN (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; VsmStorageClearContext : PIBIO_STORAGE_CLEAR_CONTEXT_FN (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; VsmStorageCreateDatabase : PIBIO_STORAGE_CREATE_DATABASE_FN (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; VsmStorageOpenDatabase : PIBIO_STORAGE_OPEN_DATABASE_FN (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; VsmStorageCloseDatabase : PIBIO_STORAGE_CLOSE_DATABASE_FN (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; VsmStorageDeleteRecord : PIBIO_STORAGE_DELETE_RECORD_FN (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; VsmStorageNotifyPowerChange : PIBIO_STORAGE_NOTIFY_POWER_CHANGE_FN (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; VsmStoragePipelineInit : PIBIO_STORAGE_PIPELINE_INIT_FN (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; VsmStoragePipelineCleanup : PIBIO_STORAGE_PIPELINE_CLEANUP_FN (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; VsmStorageActivate : PIBIO_STORAGE_ACTIVATE_FN (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; VsmStorageDeactivate : PIBIO_STORAGE_DEACTIVATE_FN (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; VsmStorageQueryExtendedInfo : PIBIO_STORAGE_QUERY_EXTENDED_INFO_FN (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; VsmStorageCacheClear : PIBIO_FRAMEWORK_VSM_CACHE_CLEAR_FN (+84, 4byte)  st.21 = 値  /  値 = st.21   (lpoke/lpeek も可)
; VsmStorageCacheImportBegin : PIBIO_FRAMEWORK_VSM_CACHE_IMPORT_BEGIN_FN (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; VsmStorageCacheImportNext : PIBIO_FRAMEWORK_VSM_CACHE_IMPORT_NEXT_FN (+92, 4byte)  st.23 = 値  /  値 = st.23   (lpoke/lpeek も可)
; VsmStorageCacheImportEnd : PIBIO_FRAMEWORK_VSM_CACHE_IMPORT_END_FN (+96, 4byte)  st.24 = 値  /  値 = st.24   (lpoke/lpeek も可)
; VsmStorageCacheExportBegin : PIBIO_FRAMEWORK_VSM_CACHE_EXPORT_BEGIN_FN (+100, 4byte)  st.25 = 値  /  値 = st.25   (lpoke/lpeek も可)
; VsmStorageCacheExportNext : PIBIO_FRAMEWORK_VSM_CACHE_EXPORT_NEXT_FN (+104, 4byte)  st.26 = 値  /  値 = st.26   (lpoke/lpeek も可)
; VsmStorageCacheExportEnd : PIBIO_FRAMEWORK_VSM_CACHE_EXPORT_END_FN (+108, 4byte)  st.27 = 値  /  値 = st.27   (lpoke/lpeek も可)
; VsmSensorAttach : PIBIO_SENSOR_ATTACH_FN (+112, 4byte)  st.28 = 値  /  値 = st.28   (lpoke/lpeek も可)
; VsmSensorDetach : PIBIO_SENSOR_DETACH_FN (+116, 4byte)  st.29 = 値  /  値 = st.29   (lpoke/lpeek も可)
; VsmSensorClearContext : PIBIO_SENSOR_CLEAR_CONTEXT_FN (+120, 4byte)  st.30 = 値  /  値 = st.30   (lpoke/lpeek も可)
; VsmSensorPushDataToEngine : PIBIO_SENSOR_PUSH_DATA_TO_ENGINE_FN (+124, 4byte)  st.31 = 値  /  値 = st.31   (lpoke/lpeek も可)
; VsmSensorNotifyPowerChange : PIBIO_SENSOR_NOTIFY_POWER_CHANGE_FN (+128, 4byte)  st.32 = 値  /  値 = st.32   (lpoke/lpeek も可)
; VsmSensorPipelineInit : PIBIO_SENSOR_PIPELINE_INIT_FN (+132, 4byte)  st.33 = 値  /  値 = st.33   (lpoke/lpeek も可)
; VsmSensorPipelineCleanup : PIBIO_SENSOR_PIPELINE_CLEANUP_FN (+136, 4byte)  st.34 = 値  /  値 = st.34   (lpoke/lpeek も可)
; VsmSensorActivate : PIBIO_SENSOR_ACTIVATE_FN (+140, 4byte)  st.35 = 値  /  値 = st.35   (lpoke/lpeek も可)
; VsmSensorDeactivate : PIBIO_SENSOR_DEACTIVATE_FN (+144, 4byte)  st.36 = 値  /  値 = st.36   (lpoke/lpeek も可)
; VsmSensorAsyncImportRawBuffer : PIBIO_SENSOR_ASYNC_IMPORT_RAW_BUFFER_FN (+148, 4byte)  st.37 = 値  /  値 = st.37   (lpoke/lpeek も可)
; VsmSensorAsyncImportSecureBuffer : PIBIO_SENSOR_ASYNC_IMPORT_SECURE_BUFFER_FN (+152, 4byte)  st.38 = 値  /  値 = st.38   (lpoke/lpeek も可)
; Reserved1 : PIBIO_FRAMEWORK_VSM_STORAGE_RESERVED_1_FN (+156, 4byte)  st.39 = 値  /  値 = st.39   (lpoke/lpeek も可)
; Reserved2 : PIBIO_FRAMEWORK_VSM_STORAGE_RESERVED_2_FN (+160, 4byte)  st.40 = 値  /  値 = st.40   (lpoke/lpeek も可)
; Reserved3 : PIBIO_FRAMEWORK_VSM_STORAGE_RESERVED_3_FN (+164, 4byte)  st.41 = 値  /  値 = st.41   (lpoke/lpeek も可)
; Reserved4 : PIBIO_STORAGE_RESERVED_1_FN (+168, 4byte)  st.42 = 値  /  値 = st.42   (lpoke/lpeek も可)
; Reserved5 : PIBIO_STORAGE_RESERVED_2_FN (+172, 4byte)  st.43 = 値  /  値 = st.43   (lpoke/lpeek も可)
; AllocateMemory : PIBIO_FRAMEWORK_ALLOCATE_MEMORY_FN (+176, 4byte)  st.44 = 値  /  値 = st.44   (lpoke/lpeek も可)
; FreeMemory : PIBIO_FRAMEWORK_FREE_MEMORY_FN (+180, 4byte)  st.45 = 値  /  値 = st.45   (lpoke/lpeek も可)
; GetProperty : PIBIO_FRAMEWORK_GET_PROPERTY_FN (+184, 4byte)  st.46 = 値  /  値 = st.46   (lpoke/lpeek も可)
; LockAndValidateSecureBuffer : PIBIO_FRAMEWORK_LOCK_AND_VALIDATE_SECURE_BUFFER_FN (+188, 4byte)  st.47 = 値  /  値 = st.47   (lpoke/lpeek も可)
; ReleaseSecureBuffer : PIBIO_FRAMEWORK_RELEASE_SECURE_BUFFER_FN (+192, 4byte)  st.48 = 値  /  値 = st.48   (lpoke/lpeek も可)
; QueryAuthorizedEnrollments : PIBIO_FRAMEWORK_VSM_QUERY_AUTHORIZED_ENROLLMENTS_FN (+196, 4byte)  st.49 = 値  /  値 = st.49   (lpoke/lpeek も可)
; DecryptSample : PIBIO_FRAMEWORK_VSM_DECRYPT_SAMPLE_FN (+200, 4byte)  st.50 = 値  /  値 = st.50   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; WINBIO_FRAMEWORK_INTERFACE サイズ: 384 バイト(x64)
dim st, 96    ; 4byte整数×96(構造体サイズ 384 / 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:入れ子/配列)
; SetUnitStatus : PIBIO_FRAMEWORK_SET_UNIT_STATUS_FN (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; VsmStorageAttach : PIBIO_STORAGE_ATTACH_FN (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; VsmStorageDetach : PIBIO_STORAGE_DETACH_FN (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; VsmStorageClearContext : PIBIO_STORAGE_CLEAR_CONTEXT_FN (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; VsmStorageCreateDatabase : PIBIO_STORAGE_CREATE_DATABASE_FN (+64, 8byte)  qpoke st,64,値 / qpeek(st,64)  ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; VsmStorageOpenDatabase : PIBIO_STORAGE_OPEN_DATABASE_FN (+72, 8byte)  qpoke st,72,値 / qpeek(st,72)  ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; VsmStorageCloseDatabase : PIBIO_STORAGE_CLOSE_DATABASE_FN (+80, 8byte)  qpoke st,80,値 / qpeek(st,80)  ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; VsmStorageDeleteRecord : PIBIO_STORAGE_DELETE_RECORD_FN (+88, 8byte)  qpoke st,88,値 / qpeek(st,88)  ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; VsmStorageNotifyPowerChange : PIBIO_STORAGE_NOTIFY_POWER_CHANGE_FN (+96, 8byte)  qpoke st,96,値 / qpeek(st,96)  ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; VsmStoragePipelineInit : PIBIO_STORAGE_PIPELINE_INIT_FN (+104, 8byte)  qpoke st,104,値 / qpeek(st,104)  ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; VsmStoragePipelineCleanup : PIBIO_STORAGE_PIPELINE_CLEANUP_FN (+112, 8byte)  qpoke st,112,値 / qpeek(st,112)  ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; VsmStorageActivate : PIBIO_STORAGE_ACTIVATE_FN (+120, 8byte)  qpoke st,120,値 / qpeek(st,120)  ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; VsmStorageDeactivate : PIBIO_STORAGE_DEACTIVATE_FN (+128, 8byte)  qpoke st,128,値 / qpeek(st,128)  ※IronHSPのみ。3.7/3.8は lpoke st,128,下位 : lpoke st,132,上位
; VsmStorageQueryExtendedInfo : PIBIO_STORAGE_QUERY_EXTENDED_INFO_FN (+136, 8byte)  qpoke st,136,値 / qpeek(st,136)  ※IronHSPのみ。3.7/3.8は lpoke st,136,下位 : lpoke st,140,上位
; VsmStorageCacheClear : PIBIO_FRAMEWORK_VSM_CACHE_CLEAR_FN (+144, 8byte)  qpoke st,144,値 / qpeek(st,144)  ※IronHSPのみ。3.7/3.8は lpoke st,144,下位 : lpoke st,148,上位
; VsmStorageCacheImportBegin : PIBIO_FRAMEWORK_VSM_CACHE_IMPORT_BEGIN_FN (+152, 8byte)  qpoke st,152,値 / qpeek(st,152)  ※IronHSPのみ。3.7/3.8は lpoke st,152,下位 : lpoke st,156,上位
; VsmStorageCacheImportNext : PIBIO_FRAMEWORK_VSM_CACHE_IMPORT_NEXT_FN (+160, 8byte)  qpoke st,160,値 / qpeek(st,160)  ※IronHSPのみ。3.7/3.8は lpoke st,160,下位 : lpoke st,164,上位
; VsmStorageCacheImportEnd : PIBIO_FRAMEWORK_VSM_CACHE_IMPORT_END_FN (+168, 8byte)  qpoke st,168,値 / qpeek(st,168)  ※IronHSPのみ。3.7/3.8は lpoke st,168,下位 : lpoke st,172,上位
; VsmStorageCacheExportBegin : PIBIO_FRAMEWORK_VSM_CACHE_EXPORT_BEGIN_FN (+176, 8byte)  qpoke st,176,値 / qpeek(st,176)  ※IronHSPのみ。3.7/3.8は lpoke st,176,下位 : lpoke st,180,上位
; VsmStorageCacheExportNext : PIBIO_FRAMEWORK_VSM_CACHE_EXPORT_NEXT_FN (+184, 8byte)  qpoke st,184,値 / qpeek(st,184)  ※IronHSPのみ。3.7/3.8は lpoke st,184,下位 : lpoke st,188,上位
; VsmStorageCacheExportEnd : PIBIO_FRAMEWORK_VSM_CACHE_EXPORT_END_FN (+192, 8byte)  qpoke st,192,値 / qpeek(st,192)  ※IronHSPのみ。3.7/3.8は lpoke st,192,下位 : lpoke st,196,上位
; VsmSensorAttach : PIBIO_SENSOR_ATTACH_FN (+200, 8byte)  qpoke st,200,値 / qpeek(st,200)  ※IronHSPのみ。3.7/3.8は lpoke st,200,下位 : lpoke st,204,上位
; VsmSensorDetach : PIBIO_SENSOR_DETACH_FN (+208, 8byte)  qpoke st,208,値 / qpeek(st,208)  ※IronHSPのみ。3.7/3.8は lpoke st,208,下位 : lpoke st,212,上位
; VsmSensorClearContext : PIBIO_SENSOR_CLEAR_CONTEXT_FN (+216, 8byte)  qpoke st,216,値 / qpeek(st,216)  ※IronHSPのみ。3.7/3.8は lpoke st,216,下位 : lpoke st,220,上位
; VsmSensorPushDataToEngine : PIBIO_SENSOR_PUSH_DATA_TO_ENGINE_FN (+224, 8byte)  qpoke st,224,値 / qpeek(st,224)  ※IronHSPのみ。3.7/3.8は lpoke st,224,下位 : lpoke st,228,上位
; VsmSensorNotifyPowerChange : PIBIO_SENSOR_NOTIFY_POWER_CHANGE_FN (+232, 8byte)  qpoke st,232,値 / qpeek(st,232)  ※IronHSPのみ。3.7/3.8は lpoke st,232,下位 : lpoke st,236,上位
; VsmSensorPipelineInit : PIBIO_SENSOR_PIPELINE_INIT_FN (+240, 8byte)  qpoke st,240,値 / qpeek(st,240)  ※IronHSPのみ。3.7/3.8は lpoke st,240,下位 : lpoke st,244,上位
; VsmSensorPipelineCleanup : PIBIO_SENSOR_PIPELINE_CLEANUP_FN (+248, 8byte)  qpoke st,248,値 / qpeek(st,248)  ※IronHSPのみ。3.7/3.8は lpoke st,248,下位 : lpoke st,252,上位
; VsmSensorActivate : PIBIO_SENSOR_ACTIVATE_FN (+256, 8byte)  qpoke st,256,値 / qpeek(st,256)  ※IronHSPのみ。3.7/3.8は lpoke st,256,下位 : lpoke st,260,上位
; VsmSensorDeactivate : PIBIO_SENSOR_DEACTIVATE_FN (+264, 8byte)  qpoke st,264,値 / qpeek(st,264)  ※IronHSPのみ。3.7/3.8は lpoke st,264,下位 : lpoke st,268,上位
; VsmSensorAsyncImportRawBuffer : PIBIO_SENSOR_ASYNC_IMPORT_RAW_BUFFER_FN (+272, 8byte)  qpoke st,272,値 / qpeek(st,272)  ※IronHSPのみ。3.7/3.8は lpoke st,272,下位 : lpoke st,276,上位
; VsmSensorAsyncImportSecureBuffer : PIBIO_SENSOR_ASYNC_IMPORT_SECURE_BUFFER_FN (+280, 8byte)  qpoke st,280,値 / qpeek(st,280)  ※IronHSPのみ。3.7/3.8は lpoke st,280,下位 : lpoke st,284,上位
; Reserved1 : PIBIO_FRAMEWORK_VSM_STORAGE_RESERVED_1_FN (+288, 8byte)  qpoke st,288,値 / qpeek(st,288)  ※IronHSPのみ。3.7/3.8は lpoke st,288,下位 : lpoke st,292,上位
; Reserved2 : PIBIO_FRAMEWORK_VSM_STORAGE_RESERVED_2_FN (+296, 8byte)  qpoke st,296,値 / qpeek(st,296)  ※IronHSPのみ。3.7/3.8は lpoke st,296,下位 : lpoke st,300,上位
; Reserved3 : PIBIO_FRAMEWORK_VSM_STORAGE_RESERVED_3_FN (+304, 8byte)  qpoke st,304,値 / qpeek(st,304)  ※IronHSPのみ。3.7/3.8は lpoke st,304,下位 : lpoke st,308,上位
; Reserved4 : PIBIO_STORAGE_RESERVED_1_FN (+312, 8byte)  qpoke st,312,値 / qpeek(st,312)  ※IronHSPのみ。3.7/3.8は lpoke st,312,下位 : lpoke st,316,上位
; Reserved5 : PIBIO_STORAGE_RESERVED_2_FN (+320, 8byte)  qpoke st,320,値 / qpeek(st,320)  ※IronHSPのみ。3.7/3.8は lpoke st,320,下位 : lpoke st,324,上位
; AllocateMemory : PIBIO_FRAMEWORK_ALLOCATE_MEMORY_FN (+328, 8byte)  qpoke st,328,値 / qpeek(st,328)  ※IronHSPのみ。3.7/3.8は lpoke st,328,下位 : lpoke st,332,上位
; FreeMemory : PIBIO_FRAMEWORK_FREE_MEMORY_FN (+336, 8byte)  qpoke st,336,値 / qpeek(st,336)  ※IronHSPのみ。3.7/3.8は lpoke st,336,下位 : lpoke st,340,上位
; GetProperty : PIBIO_FRAMEWORK_GET_PROPERTY_FN (+344, 8byte)  qpoke st,344,値 / qpeek(st,344)  ※IronHSPのみ。3.7/3.8は lpoke st,344,下位 : lpoke st,348,上位
; LockAndValidateSecureBuffer : PIBIO_FRAMEWORK_LOCK_AND_VALIDATE_SECURE_BUFFER_FN (+352, 8byte)  qpoke st,352,値 / qpeek(st,352)  ※IronHSPのみ。3.7/3.8は lpoke st,352,下位 : lpoke st,356,上位
; ReleaseSecureBuffer : PIBIO_FRAMEWORK_RELEASE_SECURE_BUFFER_FN (+360, 8byte)  qpoke st,360,値 / qpeek(st,360)  ※IronHSPのみ。3.7/3.8は lpoke st,360,下位 : lpoke st,364,上位
; QueryAuthorizedEnrollments : PIBIO_FRAMEWORK_VSM_QUERY_AUTHORIZED_ENROLLMENTS_FN (+368, 8byte)  qpoke st,368,値 / qpeek(st,368)  ※IronHSPのみ。3.7/3.8は lpoke st,368,下位 : lpoke st,372,上位
; DecryptSample : PIBIO_FRAMEWORK_VSM_DECRYPT_SAMPLE_FN (+376, 8byte)  qpoke st,376,値 / qpeek(st,376)  ※IronHSPのみ。3.7/3.8は lpoke st,376,下位 : lpoke st,380,上位
; ※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_FRAMEWORK_INTERFACE
    #field WINBIO_ADAPTER_INTERFACE_VERSION Version
    #field int Type
    #field intptr Size
    #field GUID AdapterId
    #field intptr SetUnitStatus
    #field intptr VsmStorageAttach
    #field intptr VsmStorageDetach
    #field intptr VsmStorageClearContext
    #field intptr VsmStorageCreateDatabase
    #field intptr VsmStorageOpenDatabase
    #field intptr VsmStorageCloseDatabase
    #field intptr VsmStorageDeleteRecord
    #field intptr VsmStorageNotifyPowerChange
    #field intptr VsmStoragePipelineInit
    #field intptr VsmStoragePipelineCleanup
    #field intptr VsmStorageActivate
    #field intptr VsmStorageDeactivate
    #field intptr VsmStorageQueryExtendedInfo
    #field intptr VsmStorageCacheClear
    #field intptr VsmStorageCacheImportBegin
    #field intptr VsmStorageCacheImportNext
    #field intptr VsmStorageCacheImportEnd
    #field intptr VsmStorageCacheExportBegin
    #field intptr VsmStorageCacheExportNext
    #field intptr VsmStorageCacheExportEnd
    #field intptr VsmSensorAttach
    #field intptr VsmSensorDetach
    #field intptr VsmSensorClearContext
    #field intptr VsmSensorPushDataToEngine
    #field intptr VsmSensorNotifyPowerChange
    #field intptr VsmSensorPipelineInit
    #field intptr VsmSensorPipelineCleanup
    #field intptr VsmSensorActivate
    #field intptr VsmSensorDeactivate
    #field intptr VsmSensorAsyncImportRawBuffer
    #field intptr VsmSensorAsyncImportSecureBuffer
    #field intptr Reserved1
    #field intptr Reserved2
    #field intptr Reserved3
    #field intptr Reserved4
    #field intptr Reserved5
    #field intptr AllocateMemory
    #field intptr FreeMemory
    #field intptr GetProperty
    #field intptr LockAndValidateSecureBuffer
    #field intptr ReleaseSecureBuffer
    #field intptr QueryAuthorizedEnrollments
    #field intptr DecryptSample
#endstruct

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