#ifdef _MSC_VER
#pragma once
#endif // _MSC_VER
#ifndef _ENCLAVEAPI_H_
#define _ENCLAVEAPI_H_
#include <apiset.h>
#include <apisetcconv.h>
#include <minwindef.h>
#include <minwinbase.h>
#ifdef __cplusplus
extern
"C"
{
#endif
#pragma region Desktop Family or OneCore Or App Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_APP)
_Success_(return != FALSE)
(
);
_Ret_maybenull_
_Post_writable_byte_size_(dwSize)
(
_In_opt_ LPVOID lpAddress,
_In_ SIZE_T dwInitialCommitment,
_In_ DWORD flEnclaveType,
_In_reads_bytes_(dwInfoLength) LPCVOID lpEnclaveInformation,
_Out_opt_ LPDWORD lpEnclaveError
);
_Success_(return != FALSE)
(
_In_reads_bytes_(nSize) LPCVOID lpBuffer,
_In_reads_bytes_(dwInfoLength) LPCVOID lpPageInformation,
_Out_ PSIZE_T lpNumberOfBytesWritten,
_Out_opt_ LPDWORD lpEnclaveError
);
_Success_(return != FALSE)
(
_In_reads_bytes_(dwInfoLength) LPCVOID lpEnclaveInformation,
_Out_opt_ LPDWORD lpEnclaveError
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM | WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family or OneCore Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
_Success_(return != FALSE)
(
_In_ LPVOID lpEnclaveAddress,
);
_Success_(return != FALSE)
(
_In_ LPVOID lpEnclaveAddress,
);
#ifdef UNICODE
#define LoadEnclaveImage LoadEnclaveImageW
#else
#define LoadEnclaveImage LoadEnclaveImageA
#endif // !UNICODE
_Success_(return != FALSE)
(
_In_ LPENCLAVE_ROUTINE lpRoutine,
_In_ BOOL fWaitForThread,
_Out_ LPVOID* lpReturnValue
);
_Success_(return != FALSE)
(
);
_Success_(return != FALSE)
(
);
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) */
#pragma endregion
#ifdef __cplusplus
}
#endif
#endif // _ENCLAVEAPI_H_