ホーム › Devices.BiometricFramework › WINBIO_FRAMEWORK_INTERFACE
WINBIO_FRAMEWORK_INTERFACE
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Version | WINBIO_ADAPTER_INTERFACE_VERSION | 4 | +0 | +0 | このフレームワークインターフェースのバージョン。 |
| Type | DWORD | 4 | +4 | +4 | インターフェースの種別を示す値。 |
| Size | UINT_PTR | 8/4 | +8 | +8 | この構造体のサイズ(バイト)。 |
| AdapterId | GUID | 16 | +16 | +12 | フレームワークを識別するGUID。 |
| SetUnitStatus | PIBIO_FRAMEWORK_SET_UNIT_STATUS_FN | 8/4 | +32 | +28 | ユニットの状態を設定する関数ポインタ。 |
| VsmStorageAttach | PIBIO_STORAGE_ATTACH_FN | 8/4 | +40 | +32 | VSM内ストレージへのアタッチを行う関数ポインタ。 |
| VsmStorageDetach | PIBIO_STORAGE_DETACH_FN | 8/4 | +48 | +36 | VSM内ストレージからのデタッチを行う関数ポインタ。 |
| VsmStorageClearContext | PIBIO_STORAGE_CLEAR_CONTEXT_FN | 8/4 | +56 | +40 | VSMストレージのコンテキストをクリアする関数ポインタ。 |
| VsmStorageCreateDatabase | PIBIO_STORAGE_CREATE_DATABASE_FN | 8/4 | +64 | +44 | VSM内にデータベースを作成する関数ポインタ。 |
| VsmStorageOpenDatabase | PIBIO_STORAGE_OPEN_DATABASE_FN | 8/4 | +72 | +48 | VSM内データベースを開く関数ポインタ。 |
| VsmStorageCloseDatabase | PIBIO_STORAGE_CLOSE_DATABASE_FN | 8/4 | +80 | +52 | VSM内データベースを閉じる関数ポインタ。 |
| VsmStorageDeleteRecord | PIBIO_STORAGE_DELETE_RECORD_FN | 8/4 | +88 | +56 | VSM内データベースのレコードを削除する関数ポインタ。 |
| VsmStorageNotifyPowerChange | PIBIO_STORAGE_NOTIFY_POWER_CHANGE_FN | 8/4 | +96 | +60 | VSMストレージへ電源変化を通知する関数ポインタ。 |
| VsmStoragePipelineInit | PIBIO_STORAGE_PIPELINE_INIT_FN | 8/4 | +104 | +64 | VSMストレージのパイプラインを初期化する関数ポインタ。 |
| VsmStoragePipelineCleanup | PIBIO_STORAGE_PIPELINE_CLEANUP_FN | 8/4 | +112 | +68 | VSMストレージのパイプラインを後始末する関数ポインタ。 |
| VsmStorageActivate | PIBIO_STORAGE_ACTIVATE_FN | 8/4 | +120 | +72 | VSMストレージを有効化する関数ポインタ。 |
| VsmStorageDeactivate | PIBIO_STORAGE_DEACTIVATE_FN | 8/4 | +128 | +76 | VSMストレージを無効化する関数ポインタ。 |
| VsmStorageQueryExtendedInfo | PIBIO_STORAGE_QUERY_EXTENDED_INFO_FN | 8/4 | +136 | +80 | VSMストレージの拡張情報を問い合わせる関数ポインタ。 |
| VsmStorageCacheClear | PIBIO_FRAMEWORK_VSM_CACHE_CLEAR_FN | 8/4 | +144 | +84 | VSMストレージキャッシュをクリアする関数ポインタ。 |
| VsmStorageCacheImportBegin | PIBIO_FRAMEWORK_VSM_CACHE_IMPORT_BEGIN_FN | 8/4 | +152 | +88 | VSMキャッシュインポートを開始する関数ポインタ。 |
| VsmStorageCacheImportNext | PIBIO_FRAMEWORK_VSM_CACHE_IMPORT_NEXT_FN | 8/4 | +160 | +92 | VSMキャッシュインポートの次項目を処理する関数ポインタ。 |
| VsmStorageCacheImportEnd | PIBIO_FRAMEWORK_VSM_CACHE_IMPORT_END_FN | 8/4 | +168 | +96 | VSMキャッシュインポートを終了する関数ポインタ。 |
| VsmStorageCacheExportBegin | PIBIO_FRAMEWORK_VSM_CACHE_EXPORT_BEGIN_FN | 8/4 | +176 | +100 | VSMキャッシュエクスポートを開始する関数ポインタ。 |
| VsmStorageCacheExportNext | PIBIO_FRAMEWORK_VSM_CACHE_EXPORT_NEXT_FN | 8/4 | +184 | +104 | VSMキャッシュエクスポートの次項目を処理する関数ポインタ。 |
| VsmStorageCacheExportEnd | PIBIO_FRAMEWORK_VSM_CACHE_EXPORT_END_FN | 8/4 | +192 | +108 | VSMキャッシュエクスポートを終了する関数ポインタ。 |
| VsmSensorAttach | PIBIO_SENSOR_ATTACH_FN | 8/4 | +200 | +112 | VSM内センサへのアタッチを行う関数ポインタ。 |
| VsmSensorDetach | PIBIO_SENSOR_DETACH_FN | 8/4 | +208 | +116 | VSM内センサからのデタッチを行う関数ポインタ。 |
| VsmSensorClearContext | PIBIO_SENSOR_CLEAR_CONTEXT_FN | 8/4 | +216 | +120 | VSMセンサのコンテキストをクリアする関数ポインタ。 |
| VsmSensorPushDataToEngine | PIBIO_SENSOR_PUSH_DATA_TO_ENGINE_FN | 8/4 | +224 | +124 | VSMセンサのデータをエンジンへ送る関数ポインタ。 |
| VsmSensorNotifyPowerChange | PIBIO_SENSOR_NOTIFY_POWER_CHANGE_FN | 8/4 | +232 | +128 | VSMセンサへ電源変化を通知する関数ポインタ。 |
| VsmSensorPipelineInit | PIBIO_SENSOR_PIPELINE_INIT_FN | 8/4 | +240 | +132 | VSMセンサのパイプラインを初期化する関数ポインタ。 |
| VsmSensorPipelineCleanup | PIBIO_SENSOR_PIPELINE_CLEANUP_FN | 8/4 | +248 | +136 | VSMセンサのパイプラインを後始末する関数ポインタ。 |
| VsmSensorActivate | PIBIO_SENSOR_ACTIVATE_FN | 8/4 | +256 | +140 | VSMセンサを有効化する関数ポインタ。 |
| VsmSensorDeactivate | PIBIO_SENSOR_DEACTIVATE_FN | 8/4 | +264 | +144 | VSMセンサを無効化する関数ポインタ。 |
| VsmSensorAsyncImportRawBuffer | PIBIO_SENSOR_ASYNC_IMPORT_RAW_BUFFER_FN | 8/4 | +272 | +148 | VSMセンサの生バッファを非同期にインポートする関数ポインタ。 |
| VsmSensorAsyncImportSecureBuffer | PIBIO_SENSOR_ASYNC_IMPORT_SECURE_BUFFER_FN | 8/4 | +280 | +152 | VSMセンサのセキュアバッファを非同期にインポートする関数ポインタ。 |
| Reserved1 | PIBIO_FRAMEWORK_VSM_STORAGE_RESERVED_1_FN | 8/4 | +288 | +156 | 将来の拡張用に予約された関数ポインタ。 |
| Reserved2 | PIBIO_FRAMEWORK_VSM_STORAGE_RESERVED_2_FN | 8/4 | +296 | +160 | 将来の拡張用に予約された関数ポインタ。 |
| Reserved3 | PIBIO_FRAMEWORK_VSM_STORAGE_RESERVED_3_FN | 8/4 | +304 | +164 | 将来の拡張用に予約された関数ポインタ。 |
| Reserved4 | PIBIO_STORAGE_RESERVED_1_FN | 8/4 | +312 | +168 | 将来の拡張用に予約された関数ポインタ。 |
| Reserved5 | PIBIO_STORAGE_RESERVED_2_FN | 8/4 | +320 | +172 | 将来の拡張用に予約された関数ポインタ。 |
| AllocateMemory | PIBIO_FRAMEWORK_ALLOCATE_MEMORY_FN | 8/4 | +328 | +176 | フレームワーク管理のメモリを確保する関数ポインタ。 |
| FreeMemory | PIBIO_FRAMEWORK_FREE_MEMORY_FN | 8/4 | +336 | +180 | 確保したメモリを解放する関数ポインタ。 |
| GetProperty | PIBIO_FRAMEWORK_GET_PROPERTY_FN | 8/4 | +344 | +184 | フレームワークのプロパティを取得する関数ポインタ。 |
| LockAndValidateSecureBuffer | PIBIO_FRAMEWORK_LOCK_AND_VALIDATE_SECURE_BUFFER_FN | 8/4 | +352 | +188 | セキュアバッファをロックし検証する関数ポインタ。 |
| ReleaseSecureBuffer | PIBIO_FRAMEWORK_RELEASE_SECURE_BUFFER_FN | 8/4 | +360 | +192 | セキュアバッファを解放する関数ポインタ。 |
| QueryAuthorizedEnrollments | PIBIO_FRAMEWORK_VSM_QUERY_AUTHORIZED_ENROLLMENTS_FN | 8/4 | +368 | +196 | 認可済み登録を問い合わせる関数ポインタ。 |
| DecryptSample | PIBIO_FRAMEWORK_VSM_DECRYPT_SAMPLE_FN | 8/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 Structureimport 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: pointerstruct 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