다음을 통해 공유


VBS Enclave에서 사용할 수 있는 Vertdll API

적용 대상:✅ Windows 11 빌드 26100.2314 이상 ✅ Windows Server 2025 이상

Enclave는 신뢰할 수 있는 실행 환경을 만드는 데 사용됩니다. 이러한 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 활성 함수 테이블에서 지정된 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
두 개의 버퍼에서 문자를 비교합니다.
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 다른 Singly 연결된 목록의 맨 앞에 Singly 연결된 목록을 삽입합니다.
InterlockedPushListSListEx interlockedapi.h 다른 Singly 연결된 목록의 맨 앞에 Singly 연결된 목록을 삽입합니다.
QueryDepthSList interlockedapi.h 지정된 singly 연결된 목록의 항목 수를 검색합니다.
DisableThreadLibraryCalls libloaderapi.h 지정된 DLL에 대한 DLL_THREAD_ATTACHDLL_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(와이드 문자) 문자열을 새 문자열에 매핑합니다.

참고: VBS Enclave 에서 사용할 수 있는 유일한 코드 페이지는 CP_UTF8.
MultiByteToWideChar stringapiset.h 문자열을 UTF-16(와이드 문자) 문자열에 매핑합니다.

참고: VBS Enclave 에서 사용할 수 있는 유일한 코드 페이지는 CP_UTF8.
LdrResolveDelayLoadedAPI
ResolveDelayLoadedAPI 참조
- 지정된 가져오기의 대상 함수를 찾고 가져오기 thunk의 함수 포인터를 함수 구현의 대상으로 바꿉니다.

참고 항목