Vertdll APIs available in VBS enclaves

Applies to: ✅ Windows 11 Build 26100.2314 or later ✅ Windows Server 2025 or later

Enclaves are used to create trusted execution environments. These Vertdll APIs are available to developers in VBS enclaves.

Functions exported by Vertdll.dll

The following APIs exported by Vertdll.dll are available to be called in VBS enclaves.

API Header Description
IsProcessorFeaturePresent processthreadsapi.h Determines whether the specified processor feature is supported by the current computer.
LdrDisableThreadCalloutsForDll - Disables thread attach and detach callouts to a DLL.
NtTerminateProcess
See TerminateProcess
processthreadsapi.h Terminates the specified process and all of its threads.
RtlCaptureContext winnt.h Retrieves a context record in the context of the caller.
RtlGetLastNtStatus
See GetLastError
- Gets the last NTSTATUS value.
RtlLookupFunctionEntry winnt.h Searches the active function tables for an entry that corresponds to the specified PC value.
RtlPcToFileHeader winnt.h Retrieves the base address of the image that contains the specified PC value.
RtlRaiseStatus
See RaiseException
- Raises an exception, with only a dwExceptionCode parameter. RtlRaiseStatus invokes RaiseException, passing EXCEPTION_NONCONTINUABLE to indicate a noncontinuable exception has been encountered.
RtlTimeFieldsToTime wdm.h Converts TIME_FIELDS information to a system time value.
RtlUnhandledExceptionFilter
See UnhandledExceptionFilter
- An application-defined function that passes unhandled exceptions to the debugger, if the process is being debugged.
RtlUnwind winnt.h Initiates an unwind of procedure call frames.
RtlUnwindEx winnt.h Initiates an unwind of procedure call frames.
RtlVirtualUnwind winnt.h Retrieves the invocation context of the function that precedes the specified function context.
RtlGetSystemGlobalData - Gets the address of the system global data area.
memcmp memory.h or
string.h
Compares characters in two buffers.
memcpy memory.h or
string.h
Copies bytes between buffers.
memmove string.h Moves one buffer to another.
memset memory.h or
string.h
Sets a buffer to a specified character.
OutputDebugStringW debugapi.h Sends a string to the debugger for display.
CallEnclave enclaveapi.h Calls a function within an enclave.
EnclaveGetEnclaveInformation winenclaveapi.h Gets information about the currently executing enclave.
GetCurrentProcess processthreadsapi.h Retrieves a pseudo handle for the current process.
TerminateEnclave enclaveapi.h Ends the execution of the threads that are running within an enclave.
TerminateProcess processthreadsapi.h Terminates the specified process and all of its threads.
GetLastError errhandlingapi.h Retrieves the calling thread's last-error code value.
SetLastError errhandlingapi.h Sets the last-error code for the calling thread.
RaiseException errhandlingapi.h Raises an exception in the calling thread.
SetUnhandledExceptionFilter errhandlingapi.h Enables an application to supersede the top-level exception handler of each thread of a process.
GetProcessHeap heapapi.h Retrieves a handle to the default heap of the calling process.
GetProcessHeaps heapapi.h Returns the number of active heaps and retrieves handles to all of the active heaps for the calling process.
HeapAlloc heapapi.h Allocates a block of memory from a heap. The allocated memory is not movable.
HeapCompact heapapi.h Returns the size of the largest committed free block in the specified heap.
HeapCreate heapapi.h Creates a private heap object that can be used by the calling process.
HeapDestroy heapapi.h Destroys the specified heap object. It decommits and releases all the pages of a private heap object, and it invalidates the handle to the heap.
HeapFree heapapi.h Frees a memory block allocated from a heap by the HeapAlloc or HeapReAlloc function.
HeapLock heapapi.h Attempts to acquire the critical section object, or lock, that is associated with a specified heap.
HeapReAlloc heapapi.h Reallocates a block of memory from a heap. This function enables you to resize a memory block and change other memory block properties.
HeapSize heapapi.h Retrieves the size of a memory block allocated from a heap by the HeapAlloc or HeapReAlloc function.
HeapUnlock heapapi.h Releases ownership of the critical section object, or lock, that is associated with a specified heap. It reverses the action of the HeapLock function.
InitializeSListHead interlockedapi.h Initializes the head of a singly linked list.
InterlockedFlushSList interlockedapi.h Removes all items from a singly linked list.
InterlockedPopEntrySList interlockedapi.h Removes an item from the front of a singly linked list.
InterlockedPushEntrySList interlockedapi.h Inserts an item at the front of a singly linked list.
InterlockedPushListSList interlockedapi.h Inserts a singly-linked list at the front of another singly linked list.
InterlockedPushListSListEx interlockedapi.h Inserts a singly-linked list at the front of another singly linked list.
QueryDepthSList interlockedapi.h Retrieves the number of entries in the specified singly linked list.
DisableThreadLibraryCalls libloaderapi.h Disables the DLL_THREAD_ATTACH and DLL_THREAD_DETACH notifications for the specified DLL.
GetModuleHandleExW libloaderapi.h Retrieves a module handle for the specified module and increments the module's reference count unless GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT is specified.
GetProcAddress libloaderapi.h Retrieves the address of an exported function or variable from the specified DLL.
SetThreadStackGuarantee processthreadsapi.h Sets the minimum size of the stack associated with the calling thread or fiber that will be available during any stack overflow exceptions.
VirtualAlloc memoryapi.h Reserves, commits, or changes the state of a region of pages in the virtual address space of the calling process.
VirtualFree memoryapi.h Releases, decommits, or releases and decommits a region of pages within the virtual address space of the calling process.
VirtualProtect memoryapi.h Changes the protection on a region of committed pages in the virtual address space of the calling process.
VirtualQuery memoryapi.h Retrieves information about a range of pages in the virtual address space of the calling process.
AcquireSRWLockExclusive synchapi.h Acquires a slim reader/writer (SRW) lock in exclusive mode.
AcquireSRWLockShared synchapi.h Acquires a slim reader/writer (SRW) lock in shared mode.
DeleteCriticalSection synchapi.h Releases all resources used by an unowned critical section object.
DeleteSynchronizationBarrier synchapi.h Deletes a synchronization barrier.
EnterCriticalSection synchapi.h Waits for ownership of the specified critical section object. The function returns when the calling thread is granted ownership.
EnterSynchronizationBarrier synchapi.h Causes the calling thread to wait at a synchronization barrier until the maximum number of threads have entered the barrier.
InitializeConditionVariable synchapi.h Initializes a condition variable.
InitializeCriticalSection synchapi.h Initializes a critical section object.
InitializeCriticalSectionAndSpinCount synchapi.h Initializes a critical section object and sets the spin count for the critical section.
InitializeCriticalSectionEx synchapi.h Initializes a critical section object with a spin count and optional flags.
InitializeSRWLock synchapi.h Initialize a slim reader/writer (SRW) lock.
InitializeSynchronizationBarrier synchapi.h Initializes a new synchronization barrier.
LeaveCriticalSection synchapi.h Releases ownership of the specified critical section object.
ReleaseSRWLockExclusive synchapi.h Releases a slim reader/writer (SRW) lock that was acquired in exclusive mode.
ReleaseSRWLockShared synchapi.h Releases a slim reader/writer (SRW) lock that was acquired in shared mode.
SetCriticalSectionSpinCount synchapi.h Sets the spin count for the specified critical section.
SleepConditionVariableCS synchapi.h Sleeps on the specified condition variable and releases the specified critical section as an atomic operation.
SleepConditionVariableSRW synchapi.h Sleeps on the specified condition variable and releases the specified lock as an atomic operation.
TryAcquireSRWLockExclusive synchapi.h Attempts to acquire a slim reader/writer (SRW) lock in exclusive mode. If the call is successful, the calling thread takes ownership of the lock.
TryAcquireSRWLockShared synchapi.h Attempts to acquire a slim reader/writer (SRW) lock in shared mode. If the call is successful, the calling thread takes ownership of the lock.
TryEnterCriticalSection synchapi.h Attempts to enter a critical section without blocking. If the call is successful, the calling thread takes ownership of the critical section.
WaitOnAddress synchapi.h Waits for the value at the specified address to change.
WakeAllConditionVariable synchapi.h Wake all threads waiting on the specified condition variable.
WakeByAddressAll synchapi.h Wakes all threads that are waiting for the value of an address to change.
WakeByAddressSingle synchapi.h Wakes one thread that is waiting for the value of an address to change.
WakeConditionVariable synchapi.h Wake a single thread waiting on the specified condition variable.
GetCurrentThread processthreadsapi.h Retrieves a pseudo handle for the calling thread.
GetCurrentThreadId processthreadsapi.h Retrieves the thread identifier of the calling thread.
TlsAlloc processthreadsapi.h Allocates a thread local storage (TLS) index.
TlsFree processthreadsapi.h Releases a TLS index, making it available for reuse.
TlsGetValue processthreadsapi.h Retrieves the value in the calling thread's TLS slot for the specified TLS index.
TlsSetValue processthreadsapi.h Stores a value in the calling thread's TLS slot for the specified TLS index.
EnclaveGetAttestationReport winenclaveapi.h Gets an enclave attestation report that describes the current enclave and is signed by the authority that is responsible for the type of the enclave.
EnclaveSealData winenclaveapi.h Generates an encrypted binary large object (blob) from unencypted data.
EnclaveUnsealData winenclaveapi.h Decrypts an encrypted binary large object (blob).
EnclaveVerifyAttestationReport winenclaveapi.h Verifies an attestation report that was generated on the current system.
WideCharToMultiByte stringapiset.h Maps a UTF-16 (wide character) string to a new character string.

Note: The only code page available to VBS Enclaves is CP_UTF8.
MultiByteToWideChar stringapiset.h Maps a character string to a UTF-16 (wide character) string.

Note: The only code page available to VBS Enclaves is CP_UTF8.
LdrResolveDelayLoadedAPI
See ResolveDelayLoadedAPI
- Locates the target function of the specified import and replaces the function pointer in the import thunk with the target of the function implementation.

See also