VBS enclave 中提供的 Vertdll API

飞地用于创建受信任的执行环境。 这些 Vertdll API 适用于 VBS enclave 中的开发人员。

通过 Vertdll.dll 导出的函数

通过 Vertdll.dll 导出的以下 API 可以在 VBS enclave 中调用。

API 标头 说明
IsProcessorFeaturePresent processthreadsapi.h 确定当前计算机是否支持指定的处理器功能。
LdrDisableThreadCalloutsForDll - 禁止对 DLL 进行线程附加和分离标注。
NtTerminateProcess
请参阅 TerminateProcess
processthreadsapi.h 终止指定的进程及其所有线程。
RtlCaptureContext winnt.h 检索调用方上下文中的上下文记录。
RtlGetLastNtStatus
请参阅 GetLastError
- 获取最后一个 NTSTATUS 值。
RtlLookupFunctionEntry winnt.h 在活动函数表中搜索与指定电脑值对应的条目。
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
比较两个缓冲区中的字符。
memcpy memory.h 或
string.h
在缓冲区之间复制字节。
memmove string.h 将一个缓冲区移到另一个缓冲区。
memset memory.h 或
string.h
将缓冲区设置为指定的字符。
OutputDebugStringW debugapi.h 将字符串发送到调试程序进行显示。
CallEnclave enclaveapi.h 调用 enclave 中的函数。
EnclaveGetEnclaveInformation winenclaveapi.h 获取有关当前正在执行的 enclave 的信息。
GetCurrentProcess processthreadsapi.h 检索当前进程的伪句柄。
TerminateEnclave enclaveapi.h 结束在 enclave 中运行的线程的执行。
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 唤醒等待地址值更改的一个线程。
WakeConditionVariable synchapi.h 唤醒根据指定条件变量进行等待的单个线程。
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 获取 enclave 证明报告,该报告描述当前 enclave,由负责 enclave 类型的机构签名。
EnclaveSealData winenclaveapi.h 从未加密的数据生成加密的二进制大型对象 (blob)。
EnclaveUnsealData winenclaveapi.h 解密已加密的二进制大型对象 (blob)。
EnclaveVerifyAttestationReport winenclaveapi.h 验证当前系统上生成的证明报告。
WideCharToMultiByte stringapiset.h 将 UTF-16(宽字符)字符串映射到新字符串。
MultiByteToWideChar stringapiset.h 将字符串映射到 UTF-16(宽字符)字符串。
LdrResolveDelayLoadedAPI
请参阅 ResolveDelayLoadedAPI
- 定位指定导入的目标函数,并将导入 thunk 中的函数指针替换为函数实现的目标。

另请参阅