VBS エンクレーブで使用できる Vertdll API
適用対象:✅ Windows 11 ビルド 26100.2314 以降 ✅ Windows Server 2025 以降
エンクレーブは、信頼された実行環境を作成するために使用されます。 これらの Vertdll API は、VBS エンクレーブ内の開発者が使用できます。
Vertdll.dll によってエクスポートされる関数
Vertdll.dll によってエクスポートされる次の API は、VBS エンクレーブで呼び出すことができます。
API | Header | 説明 |
---|---|---|
IsProcessorFeaturePresent | processthreadsapi.h | 指定したプロセッサ機能が現在のコンピューターでサポートされているかどうかを判断します。 |
LdrDisableThreadCalloutsForDll | - | スレッドのアタッチを無効にし、DLL へのコールアウトをデタッチします。 |
NtTerminateProcess 「TerminateProcess」を参照してください |
processthreadsapi.h | 指定したプロセスとそのすべてのスレッドを終了します。 |
RtlCaptureContext | winnt.h | 呼び出し元のコンテキスト内のコンテキスト レコードを取得します。 |
RtlGetLastNtStatus 「GetLastError」を参照してください |
- | 最終的な NTSTATUS 値を取得します。 |
RtlLookupFunctionEntry | winnt.h | 指定した PC 値に対応するエントリをアクティブな関数テーブルで検索します。 |
RtlPcToFileHeader | winnt.h | 指定した PC 値を含むイメージのベース アドレスを取得します。 |
RtlRaiseStatus 「RaiseException」を参照してください |
- | dwExceptionCode パラメーターのみを使用して例外を発生させます。 RtlRaiseStatus は RaiseException を呼び出し、EXCEPTION_NONCONTINUABLE を渡して、継続不可能な例外が発生したことを示します。 |
RtlTimeFieldsToTime | wdm.h | TIME_FIELDS 情報をシステム時刻値に変換します。 |
RtlUnhandledExceptionFilter 「UnhandledExceptionFilter」を参照してください |
- | プロセスがデバッグされている場合に、ハンドルされない例外をデバッガーに渡すアプリケーション定義関数。 |
RtlUnwind | winnt.h | プロシージャ呼び出しフレームのアンワインドを開始します。 |
RtlUnwindEx | winnt.h | プロシージャ呼び出しフレームのアンワインドを開始します。 |
RtlVirtualUnwind | winnt.h | 指定した関数コンテキストの前にある関数の呼び出しコンテキストを取得します。 |
RtlGetSystemGlobalData | - | システムのグローバル データ領域のアドレスを取得します。 |
memcmp | memory.h または string.h |
2 つのバッファーの文字を比較します。 |
memcpy | memory.h または string.h |
バッファー間でバイトをコピーします。 |
memmove | string.h | バッファーを別のバッファーに移動します。 |
memset | memory.h または string.h |
指定した文字にバッファーを設定します。 |
OutputDebugStringW | debugapi.h | 文字列を表示するためにデバッガーに送信します。 |
CallEnclave | enclaveapi.h | エンクレーブ内で関数を呼び出します。 |
EnclaveGetEnclaveInformation | winenclaveapi.h | 現在実行中のエンクレーブに関する情報を取得します。 |
GetCurrentProcess | processthreadsapi.h | 現在のプロセスの擬似ハンドルを取得します。 |
TerminateEnclave | enclaveapi.h | エンクレーブ内で実行されているスレッドの実行を終了します。 |
TerminateProcess | processthreadsapi.h | 指定したプロセスとそのすべてのスレッドを終了します。 |
GetLastError | errhandlingapi.h | 呼び出し元のスレッドの最終エラー コード値を取得します。 |
SetLastError | errhandlingapi.h | 呼び出し元スレッドの最終エラー コードを設定します。 |
RaiseException | errhandlingapi.h | 呼び出し元のスレッドで例外を発生させます。 |
SetUnhandledExceptionFilter | errhandlingapi.h | アプリケーションがプロセスの各スレッドの最上位の例外ハンドラーを置き換えられるようにします。 |
GetProcessHeap | heapapi.h | 呼び出し元プロセスの既定のヒープへのハンドルを取得します。 |
GetProcessHeaps | heapapi.h | アクティブ ヒープの数を返し、呼び出し元プロセスのすべてのアクティブ ヒープへのハンドルを取得します。 |
HeapAlloc | heapapi.h | ヒープからメモリ ブロックを割り当てます。 割り当てられたメモリは移動できません。 |
HeapCompact | heapapi.h | 指定したヒープ内でコミットされた最大の空きブロックのサイズを返します。 |
HeapCreate | heapapi.h | 呼び出し元プロセスで使用できるプライベート ヒープ オブジェクトを作成します。 |
HeapDestroy | heapapi.h | 指定したヒープ オブジェクトを破棄します。 プライベート ヒープ オブジェクトのすべてのページをコミット解除して解放し、ヒープへのハンドルを無効にします。 |
HeapFree | heapapi.h | HeapAlloc または HeapReAlloc 関数によってヒープから割り当てられたメモリ ブロックを解放します。 |
HeapLock | heapapi.h | 指定したヒープに関連付けられているクリティカル セクション オブジェクト (ロック) の取得を試みます。 |
HeapReAlloc | heapapi.h | メモリ ブロックをヒープから再割り当てします。 この関数を使用すると、メモリ ブロックのサイズを変更したり、他のメモリ ブロックのプロパティを変更したりできます。 |
HeapSize | heapapi.h | HeapAlloc または HeapReAlloc 関数によってヒープから割り当てられたメモリ ブロックのサイズを取得します。 |
HeapUnlock | heapapi.h | 指定したヒープに関連付けられているクリティカル セクション オブジェクト (ロック) の所有権を解放します。 HeapLock 関数のアクションを元に戻します。 |
InitializeSListHead | interlockedapi.h | シングル リンク リストのヘッドを初期化します。 |
InterlockedFlushSList | interlockedapi.h | シングル リンク リストからすべての項目を削除します。 |
InterlockedPopEntrySList | interlockedapi.h | シングル リンク リストの先頭から項目を削除します。 |
InterlockedPushEntrySList | interlockedapi.h | シングル リンク リストの先頭に項目を挿入します。 |
InterlockedPushListSList | interlockedapi.h | シングルリンク リストを別のシングル リンク リストの先頭に挿入します。 |
InterlockedPushListSListEx | interlockedapi.h | シングルリンク リストを別のシングル リンク リストの先頭に挿入します。 |
QueryDepthSList | interlockedapi.h | 指定したシングル リンク リスト内のエントリの数を取得します。 |
DisableThreadLibraryCalls | libloaderapi.h | 指定した DLL の DLL_THREAD_ATTACH および DLL_THREAD_DETACH 通知を無効にします。 |
GetModuleHandleExW | libloaderapi.h | 指定したモジュールのモジュール ハンドルを取得し、GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT が指定されていない限り、モジュールの参照カウントをインクリメントします。 |
GetProcAddress | libloaderapi.h | 指定した DLL からエクスポートされた関数または変数のアドレスを取得します。 |
SetThreadStackGuarantee | processthreadsapi.h | スタック オーバーフロー例外の発生時に使用可能な呼び出し元のスレッドまたはファイバーに関連付けられたスタックの最小サイズを設定します。 |
VirtualAlloc | memoryapi.h | 呼び出し元プロセスの仮想アドレス空間内のページ領域を予約、コミット、または状態変更します。 |
VirtualFree | memoryapi.h | 呼び出し元プロセスの仮想アドレス空間内のページの領域を解放、コミット解除、または解放およびコミット解除します。 |
VirtualProtect | memoryapi.h | 呼び出し元プロセスの仮想アドレス空間内のコミット済みページの領域の保護を変更します。 |
VirtualQuery | memoryapi.h | 呼び出し元プロセスの仮想アドレス空間内のページの範囲に関する情報を取得します。 |
AcquireSRWLockExclusive | synchapi.h | 排他モードでスリム リーダー/ライター (SRW) ロックを取得します。 |
AcquireSRWLockShared | synchapi.h | 共有モードでスリム リーダー/ライター (SRW) ロックを取得します。 |
DeleteCriticalSection | synchapi.h | 未所有のクリティカル セクション オブジェクトによって使用されるすべてのリソースを解放します。 |
DeleteSynchronizationBarrier | synchapi.h | 同期バリアを削除します。 |
EnterCriticalSection | synchapi.h | 指定したクリティカル セクション オブジェクトの所有権を待機します。 この関数は、呼び出し元のスレッドに所有権が付与されたときに返されます。 |
EnterSynchronizationBarrier | synchapi.h | スレッドの最大数がバリアに入るまで、呼び出し元スレッドを同期バリアで待機させます。 |
InitializeConditionVariable | synchapi.h | 条件変数を初期化します。 |
InitializeCriticalSection | synchapi.h | クリティカル セクション オブジェクトを初期化します。 |
InitializeCriticalSectionAndSpinCount | synchapi.h | クリティカル セクション オブジェクトを初期化し、クリティカル セクションのスピン カウントを設定します。 |
InitializeCriticalSectionEx | synchapi.h | スピン カウントと省略可能なフラグを使用してクリティカル セクション オブジェクトを初期化します。 |
InitializeSRWLock | synchapi.h | スリム リーダー/ライター (SRW) ロックを初期化します。 |
InitializeSynchronizationBarrier | synchapi.h | 新しい同期バリアを初期化します。 |
LeaveCriticalSection | synchapi.h | 指定したクリティカル セクション オブジェクトの所有権を解放します。 |
ReleaseSRWLockExclusive | synchapi.h | 排他モードで取得されたスリム リーダー/ライター (SRW) ロックを解放します。 |
ReleaseSRWLockShared | synchapi.h | 共有モードで取得されたスリム リーダー/ライター (SRW) ロックを解放します。 |
SetCriticalSectionSpinCount | synchapi.h | 指定したクリティカル セクションのスピン カウントを設定します。 |
SleepConditionVariableCS | synchapi.h | 指定した条件変数でスリープ状態になり、指定したクリティカル セクションをアトミック操作として解放します。 |
SleepConditionVariableSRW | synchapi.h | 指定した条件変数でスリープ状態になり、指定したロックをアトミック操作として解放します。 |
TryAcquireSRWLockExclusive | synchapi.h | 排他モードでスリム リーダー/ライター (SRW) ロックの取得を試みます。 呼び出しが成功すると、呼び出し元のスレッドはロックの所有権を取得します。 |
TryAcquireSRWLockShared | synchapi.h | 共有モードでスリム リーダー/ライター (SRW) ロックの取得を試みます。 呼び出しが成功すると、呼び出し元のスレッドはロックの所有権を取得します。 |
TryEnterCriticalSection | synchapi.h | ブロックせずにクリティカル セクションの入力を試します。 呼び出しが成功すると、呼び出し元のスレッドはクリティカル セクションの所有権を取得します。 |
WaitOnAddress | synchapi.h | 指定したアドレスの値が変更されるまで待機します。 |
WakeAllConditionVariable | synchapi.h | 指定した条件変数で待機しているすべてのスレッドをスリープ解除します。 |
WakeByAddressAll | synchapi.h | アドレスの値が変更されるのを待機しているすべてのスレッドをスリープ解除します。 |
WakeByAddressSingle | synchapi.h | アドレスの値が変更されるのを待機している 1 つのスレッドをスリープ解除します。 |
WakeConditionVariable | synchapi.h | 指定した条件変数で待機している 1 つのスレッドをスリープ解除します。 |
GetCurrentThread | processthreadsapi.h | 呼び出し元スレッドの擬似ハンドルを取得します。 |
GetCurrentThreadId | processthreadsapi.h | 呼び出し元スレッドのスレッド識別子を取得します。 |
TlsAlloc | processthreadsapi.h | スレッド ローカル ストレージ (TLS) インデックスを割り当てます。 |
TlsFree | processthreadsapi.h | TLS インデックスを解放し、再利用できるようにします。 |
TlsGetValue | processthreadsapi.h | 指定した TLS インデックスの呼び出し元スレッドの TLS スロットの値を取得します。 |
TlsSetValue | processthreadsapi.h | 指定した TLS インデックスの呼び出し元スレッドの TLS スロットに値を格納します。 |
EnclaveGetAttestationReport | winenclaveapi.h | 現在のエンクレーブを記述し、エンクレーブの種類を担当する機関によって署名されたエンクレーブ構成証明レポートを取得します。 |
EnclaveSealData | winenclaveapi.h | 暗号化されていないデータから暗号化されたバイナリ ラージ オブジェクト (BLOB) を生成します。 |
EnclaveUnsealData | winenclaveapi.h | 暗号化されたバイナリ ラージ オブジェクト (BLOB) を復号化します。 |
EnclaveVerifyAttestationReport | winenclaveapi.h | 現在のシステムで生成された構成証明レポートを検証します。 |
WideCharToMultiByte | stringapiset.h | UTF-16 (ワイド文字) 文字列を新しい文字列にマップします。 注: VBS エンクレーブで使用できるコード ページは CP_UTF8のみです。 |
MultiByteToWideChar | stringapiset.h | 文字列を UTF-16 (ワイド文字) 文字列にマップします。 注: VBS エンクレーブで使用できるコード ページは CP_UTF8のみです。 |
LdrResolveDelayLoadedAPI 「ResolveDelayLoadedAPI」を参照してください |
- | 指定したインポートのターゲット関数を検索し、インポート サンク内の関数ポインターを関数実装のターゲットに置き換えます。 |