/*++ | |
Copyright (c) Microsoft Corporation. All rights reserved. | |
Module Name: | |
WinHvPlatform.ext | |
Abstract: | |
ApiSet contract for the Windows Hypervisor User-Mode Platform APIs. | |
--*/ | |
#ifndef _WINHVAPI_H_ | |
#define _WINHVAPI_H_ | |
#if defined(_MSC_VER) && (_MSC_VER >= 1200) | |
#pragma once | |
#endif | |
#include <apiset.h> | |
#include <apisetcconv.h> | |
#include <minwindef.h> | |
#include <winapifamily.h> | |
#pragma region Desktop Family or OneCore Family | |
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) | |
#include <WinHvPlatformDefs.h> | |
#ifdef __cplusplus | |
extern "C" { | |
#endif | |
// | |
// Platform capabilities | |
// | |
HRESULT | |
WINAPI | |
WHvGetCapability( | |
_In_ WHV_CAPABILITY_CODE CapabilityCode, | |
_Out_writes_bytes_to_(CapabilityBufferSizeInBytes,*WrittenSizeInBytes) VOID* CapabilityBuffer, | |
_In_ UINT32 CapabilityBufferSizeInBytes, | |
_Out_opt_ UINT32* WrittenSizeInBytes | |
); | |
HRESULT | |
WINAPI | |
WHvCreatePartition( | |
_Out_ WHV_PARTITION_HANDLE* Partition | |
); | |
HRESULT | |
WINAPI | |
WHvSetupPartition( | |
_In_ WHV_PARTITION_HANDLE Partition | |
); | |
HRESULT | |
WINAPI | |
WHvDeletePartition( | |
_In_ WHV_PARTITION_HANDLE Partition | |
); | |
HRESULT | |
WINAPI | |
WHvGetPartitionProperty( | |
_In_ WHV_PARTITION_HANDLE Partition, | |
_In_ WHV_PARTITION_PROPERTY_CODE PropertyCode, | |
_Out_writes_bytes_to_(PropertyBufferSizeInBytes,*WrittenSizeInBytes) VOID* PropertyBuffer, | |
_In_ UINT32 PropertyBufferSizeInBytes, | |
_Out_opt_ UINT32* WrittenSizeInBytes | |
); | |
HRESULT | |
WINAPI | |
WHvSetPartitionProperty( | |
_In_ WHV_PARTITION_HANDLE Partition, | |
_In_ WHV_PARTITION_PROPERTY_CODE PropertyCode, | |
_In_reads_bytes_(PropertyBufferSizeInBytes) const VOID* PropertyBuffer, | |
_In_ UINT32 PropertyBufferSizeInBytes | |
); | |
// | |
// Memory Management | |
// | |
HRESULT | |
WINAPI | |
WHvMapGpaRange( | |
_In_ WHV_PARTITION_HANDLE Partition, | |
_In_ VOID* SourceAddress, | |
_In_ WHV_GUEST_PHYSICAL_ADDRESS GuestAddress, | |
_In_ UINT64 SizeInBytes, | |
_In_ WHV_MAP_GPA_RANGE_FLAGS Flags | |
); | |
HRESULT | |
WINAPI | |
WHvUnmapGpaRange( | |
_In_ WHV_PARTITION_HANDLE Partition, | |
_In_ WHV_GUEST_PHYSICAL_ADDRESS GuestAddress, | |
_In_ UINT64 SizeInBytes | |
); | |
HRESULT | |
WINAPI | |
WHvTranslateGva( | |
_In_ WHV_PARTITION_HANDLE Partition, | |
_In_ UINT32 VpIndex, | |
_In_ WHV_GUEST_VIRTUAL_ADDRESS Gva, | |
_In_ WHV_TRANSLATE_GVA_FLAGS TranslateFlags, | |
_Out_ WHV_TRANSLATE_GVA_RESULT* TranslationResult, | |
_Out_ WHV_GUEST_PHYSICAL_ADDRESS* Gpa | |
); | |
// | |
// Virtual Processors | |
// | |
HRESULT | |
WINAPI | |
WHvCreateVirtualProcessor( | |
_In_ WHV_PARTITION_HANDLE Partition, | |
_In_ UINT32 VpIndex, | |
_In_ UINT32 Flags | |
); | |
HRESULT | |
WINAPI | |
WHvDeleteVirtualProcessor( | |
_In_ WHV_PARTITION_HANDLE Partition, | |
_In_ UINT32 VpIndex | |
); | |
HRESULT | |
WINAPI | |
WHvRunVirtualProcessor( | |
_In_ WHV_PARTITION_HANDLE Partition, | |
_In_ UINT32 VpIndex, | |
_Out_writes_bytes_(ExitContextSizeInBytes) VOID* ExitContext, | |
_In_ UINT32 ExitContextSizeInBytes | |
); | |
UINT32 | |
WINAPI | |
WHvGetRunExitContextSize( | |
VOID | |
); | |
HRESULT | |
WINAPI | |
WHvCancelRunVirtualProcessor( | |
_In_ WHV_PARTITION_HANDLE Partition, | |
_In_ UINT32 VpIndex, | |
_In_ UINT32 Flags | |
); | |
HRESULT | |
WINAPI | |
WHvGetVirtualProcessorRegisters( | |
_In_ WHV_PARTITION_HANDLE Partition, | |
_In_ UINT32 VpIndex, | |
_In_reads_(RegisterCount) const WHV_REGISTER_NAME* RegisterNames, | |
_In_ UINT32 RegisterCount, | |
_Out_writes_(RegisterCount) WHV_REGISTER_VALUE* RegisterValues | |
); | |
HRESULT | |
WINAPI | |
WHvSetVirtualProcessorRegisters( | |
_In_ WHV_PARTITION_HANDLE Partition, | |
_In_ UINT32 VpIndex, | |
_In_reads_(RegisterCount) const WHV_REGISTER_NAME* RegisterNames, | |
_In_ UINT32 RegisterCount, | |
_In_reads_(RegisterCount) const WHV_REGISTER_VALUE* RegisterValues | |
); | |
#ifdef __cplusplus | |
} | |
#endif | |
#endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM) | |
#pragma endregion | |
#endif // _WINHVAPI_H_ | |
#ifndef ext_ms_win_hyperv_hvplatform_l1_1_0_query_routines | |
#define ext_ms_win_hyperv_hvplatform_l1_1_0_query_routines | |
// | |
//Private Extension API Query Routines | |
// | |
#ifdef __cplusplus | |
extern "C" { | |
#endif | |
BOOLEAN | |
__stdcall | |
IsWHvGetCapabilityPresent( | |
VOID | |
); | |
BOOLEAN | |
__stdcall | |
IsWHvCreatePartitionPresent( | |
VOID | |
); | |
BOOLEAN | |
__stdcall | |
IsWHvSetupPartitionPresent( | |
VOID | |
); | |
BOOLEAN | |
__stdcall | |
IsWHvDeletePartitionPresent( | |
VOID | |
); | |
BOOLEAN | |
__stdcall | |
IsWHvGetPartitionPropertyPresent( | |
VOID | |
); | |
BOOLEAN | |
__stdcall | |
IsWHvSetPartitionPropertyPresent( | |
VOID | |
); | |
BOOLEAN | |
__stdcall | |
IsWHvMapGpaRangePresent( | |
VOID | |
); | |
BOOLEAN | |
__stdcall | |
IsWHvUnmapGpaRangePresent( | |
VOID | |
); | |
BOOLEAN | |
__stdcall | |
IsWHvTranslateGvaPresent( | |
VOID | |
); | |
BOOLEAN | |
__stdcall | |
IsWHvCreateVirtualProcessorPresent( | |
VOID | |
); | |
BOOLEAN | |
__stdcall | |
IsWHvDeleteVirtualProcessorPresent( | |
VOID | |
); | |
BOOLEAN | |
__stdcall | |
IsWHvRunVirtualProcessorPresent( | |
VOID | |
); | |
BOOLEAN | |
__stdcall | |
IsWHvGetRunExitContextSizePresent( | |
VOID | |
); | |
BOOLEAN | |
__stdcall | |
IsWHvCancelRunVirtualProcessorPresent( | |
VOID | |
); | |
BOOLEAN | |
__stdcall | |
IsWHvGetVirtualProcessorRegistersPresent( | |
VOID | |
); | |
BOOLEAN | |
__stdcall | |
IsWHvSetVirtualProcessorRegistersPresent( | |
VOID | |
); | |
#ifdef __cplusplus | |
} | |
#endif | |
#endif // endof guard | |