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. |