Path: blob/main/hypervisor/src/whpx/whpx_sys/WinHvPlatform.h
5394 views
/*++12Copyright (c) Microsoft Corporation. All rights reserved.34Module Name:56WinHvPlatform.ext78Abstract:910ApiSet contract for the Windows Hypervisor User-Mode Platform APIs.1112--*/1314#ifndef _WINHVAPI_H_15#define _WINHVAPI_H_1617#if defined(_MSC_VER) && (_MSC_VER >= 1200)18#pragma once19#endif2021/*#include <apiset.h>22#include <apisetcconv.h>23#include <minwindef.h>24#include <winapifamily.h>2526#pragma region Desktop Family or OneCore Family27#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)*/2829typedef signed char INT8, *PINT8;30typedef signed short INT16, *PINT16;31typedef signed int INT32, *PINT32;32typedef signed __int64 INT64, *PINT64;33typedef unsigned char UINT8, *PUINT8;34typedef unsigned short UINT16, *PUINT16;35typedef unsigned int UINT32, *PUINT32;36typedef unsigned __int64 UINT64, *PUINT64;3738typedef unsigned long DWORD;39typedef int BOOL;40typedef unsigned char BYTE;41typedef unsigned short WORD;42typedef float FLOAT;4344typedef int INT;45typedef unsigned int UINT;46typedef unsigned int *PUINT;4748#ifndef VOID49#define VOID void50typedef char CHAR;51typedef short SHORT;52typedef long LONG;53#if !defined(MIDL_PASS)54typedef int INT;55#endif56#endif5758#define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]59#define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) // NOP, C allows these operators.60#define DECLSPEC_ALIGN(x) __declspec(align(x))6162#include "WinHvPlatformDefs.h"6364typedef long HRESULT;65typedef void *HANDLE;66typedef BYTE BOOLEAN;67#define WINAPI __stdcall68#define _In_69#define _Out_70#define _Out_opt_71#define _Out_writes_bytes_to_(x, y)72#define _In_reads_bytes_(x)73#define _Out_writes_bytes_(x)74#define _In_reads_(x)75#define _Out_writes_(x)76#define _Out_writes_bytes_to_opt_(x, y)7778#include "WinHvEmulation.h"7980#ifdef __cplusplus81extern "C" {82#endif8384//85// Platform capabilities86//8788HRESULT89WINAPI90WHvGetCapability(91_In_ WHV_CAPABILITY_CODE CapabilityCode,92_Out_writes_bytes_to_(CapabilityBufferSizeInBytes,*WrittenSizeInBytes) VOID* CapabilityBuffer,93_In_ UINT32 CapabilityBufferSizeInBytes,94_Out_opt_ UINT32* WrittenSizeInBytes95);969798HRESULT99WINAPI100WHvCreatePartition(101_Out_ WHV_PARTITION_HANDLE* Partition102);103104105HRESULT106WINAPI107WHvSetupPartition(108_In_ WHV_PARTITION_HANDLE Partition109);110111112HRESULT113WINAPI114WHvDeletePartition(115_In_ WHV_PARTITION_HANDLE Partition116);117118119HRESULT120WINAPI121WHvGetPartitionProperty(122_In_ WHV_PARTITION_HANDLE Partition,123_In_ WHV_PARTITION_PROPERTY_CODE PropertyCode,124_Out_writes_bytes_to_(PropertyBufferSizeInBytes,*WrittenSizeInBytes) VOID* PropertyBuffer,125_In_ UINT32 PropertyBufferSizeInBytes,126_Out_opt_ UINT32* WrittenSizeInBytes127);128129130HRESULT131WINAPI132WHvSetPartitionProperty(133_In_ WHV_PARTITION_HANDLE Partition,134_In_ WHV_PARTITION_PROPERTY_CODE PropertyCode,135_In_reads_bytes_(PropertyBufferSizeInBytes) const VOID* PropertyBuffer,136_In_ UINT32 PropertyBufferSizeInBytes137);138139140HRESULT141WINAPI142WHvSuspendPartitionTime(143_In_ WHV_PARTITION_HANDLE Partition144);145146147HRESULT148WINAPI149WHvResumePartitionTime(150_In_ WHV_PARTITION_HANDLE Partition151);152153154//155// Memory Management156//157158HRESULT159WINAPI160WHvMapGpaRange(161_In_ WHV_PARTITION_HANDLE Partition,162_In_ VOID* SourceAddress,163_In_ WHV_GUEST_PHYSICAL_ADDRESS GuestAddress,164_In_ UINT64 SizeInBytes,165_In_ WHV_MAP_GPA_RANGE_FLAGS Flags166);167168169HRESULT170WINAPI171WHvUnmapGpaRange(172_In_ WHV_PARTITION_HANDLE Partition,173_In_ WHV_GUEST_PHYSICAL_ADDRESS GuestAddress,174_In_ UINT64 SizeInBytes175);176177178HRESULT179WINAPI180WHvTranslateGva(181_In_ WHV_PARTITION_HANDLE Partition,182_In_ UINT32 VpIndex,183_In_ WHV_GUEST_VIRTUAL_ADDRESS Gva,184_In_ WHV_TRANSLATE_GVA_FLAGS TranslateFlags,185_Out_ WHV_TRANSLATE_GVA_RESULT* TranslationResult,186_Out_ WHV_GUEST_PHYSICAL_ADDRESS* Gpa187);188189190//191// Virtual Processors192//193194HRESULT195WINAPI196WHvCreateVirtualProcessor(197_In_ WHV_PARTITION_HANDLE Partition,198_In_ UINT32 VpIndex,199_In_ UINT32 Flags200);201202203HRESULT204WINAPI205WHvDeleteVirtualProcessor(206_In_ WHV_PARTITION_HANDLE Partition,207_In_ UINT32 VpIndex208);209210211HRESULT212WINAPI213WHvRunVirtualProcessor(214_In_ WHV_PARTITION_HANDLE Partition,215_In_ UINT32 VpIndex,216_Out_writes_bytes_(ExitContextSizeInBytes) VOID* ExitContext,217_In_ UINT32 ExitContextSizeInBytes218);219220221HRESULT222WINAPI223WHvCancelRunVirtualProcessor(224_In_ WHV_PARTITION_HANDLE Partition,225_In_ UINT32 VpIndex,226_In_ UINT32 Flags227);228229230HRESULT231WINAPI232WHvGetVirtualProcessorRegisters(233_In_ WHV_PARTITION_HANDLE Partition,234_In_ UINT32 VpIndex,235_In_reads_(RegisterCount) const WHV_REGISTER_NAME* RegisterNames,236_In_ UINT32 RegisterCount,237_Out_writes_(RegisterCount) WHV_REGISTER_VALUE* RegisterValues238);239240241HRESULT242WINAPI243WHvSetVirtualProcessorRegisters(244_In_ WHV_PARTITION_HANDLE Partition,245_In_ UINT32 VpIndex,246_In_reads_(RegisterCount) const WHV_REGISTER_NAME* RegisterNames,247_In_ UINT32 RegisterCount,248_In_reads_(RegisterCount) const WHV_REGISTER_VALUE* RegisterValues249);250251252#if defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_WIN10_VB)253#pragma deprecated("WHvGetVirtualProcessorInterruptControllerState is deprecated; use WHvGetVirtualProcessorInterruptControllerState2")254#endif255HRESULT256WINAPI257WHvGetVirtualProcessorInterruptControllerState(258_In_ WHV_PARTITION_HANDLE Partition,259_In_ UINT32 VpIndex,260_Out_writes_bytes_to_(StateSize,*WrittenSize) VOID* State,261_In_ UINT32 StateSize,262_Out_opt_ UINT32* WrittenSize263);264265266#if defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_WIN10_VB)267#pragma deprecated("WHvSetVirtualProcessorInterruptControllerState is deprecated; use WHvSetVirtualProcessorInterruptControllerState2")268#endif269HRESULT270WINAPI271WHvSetVirtualProcessorInterruptControllerState(272_In_ WHV_PARTITION_HANDLE Partition,273_In_ UINT32 VpIndex,274_In_reads_bytes_(StateSize) const VOID* State,275_In_ UINT32 StateSize276);277278279HRESULT280WINAPI281WHvRequestInterrupt(282_In_ WHV_PARTITION_HANDLE Partition,283_In_ const WHV_INTERRUPT_CONTROL* Interrupt,284_In_ UINT32 InterruptControlSize285);286287288HRESULT289WINAPI290WHvGetVirtualProcessorXsaveState(291_In_ WHV_PARTITION_HANDLE Partition,292_In_ UINT32 VpIndex,293_Out_writes_bytes_to_(BufferSizeInBytes,*BytesWritten) VOID* Buffer,294_In_ UINT32 BufferSizeInBytes,295_Out_ UINT32* BytesWritten296);297298299HRESULT300WINAPI301WHvSetVirtualProcessorXsaveState(302_In_ WHV_PARTITION_HANDLE Partition,303_In_ UINT32 VpIndex,304_In_reads_bytes_(BufferSizeInBytes) const VOID* Buffer,305_In_ UINT32 BufferSizeInBytes306);307308309HRESULT310WINAPI311WHvQueryGpaRangeDirtyBitmap(312_In_ WHV_PARTITION_HANDLE Partition,313_In_ WHV_GUEST_PHYSICAL_ADDRESS GuestAddress,314_In_ UINT64 RangeSizeInBytes,315_Out_writes_bytes_to_opt_(BitmapSizeInBytes,RangeSizeInBytes / 4096 / 64) UINT64* Bitmap,316_In_ UINT32 BitmapSizeInBytes317);318319320HRESULT321WINAPI322WHvGetPartitionCounters(323_In_ WHV_PARTITION_HANDLE Partition,324_In_ WHV_PARTITION_COUNTER_SET CounterSet,325_Out_writes_bytes_to_(BufferSizeInBytes,*BytesWritten) VOID* Buffer,326_In_ UINT32 BufferSizeInBytes,327_Out_opt_ UINT32* BytesWritten328);329330331HRESULT332WINAPI333WHvGetVirtualProcessorCounters(334_In_ WHV_PARTITION_HANDLE Partition,335_In_ UINT32 VpIndex,336_In_ WHV_PROCESSOR_COUNTER_SET CounterSet,337_Out_writes_bytes_to_(BufferSizeInBytes,*BytesWritten) VOID* Buffer,338_In_ UINT32 BufferSizeInBytes,339_Out_opt_ UINT32* BytesWritten340);341342343HRESULT344WINAPI345WHvGetVirtualProcessorInterruptControllerState2(346_In_ WHV_PARTITION_HANDLE Partition,347_In_ UINT32 VpIndex,348_Out_writes_bytes_to_(StateSize,*WrittenSize) VOID* State,349_In_ UINT32 StateSize,350_Out_opt_ UINT32* WrittenSize351);352353354HRESULT355WINAPI356WHvSetVirtualProcessorInterruptControllerState2(357_In_ WHV_PARTITION_HANDLE Partition,358_In_ UINT32 VpIndex,359_In_reads_bytes_(StateSize) const VOID* State,360_In_ UINT32 StateSize361);362363364HRESULT365WINAPI366WHvRegisterPartitionDoorbellEvent(367_In_ WHV_PARTITION_HANDLE Partition,368_In_ const WHV_DOORBELL_MATCH_DATA* MatchData,369_In_ HANDLE EventHandle370);371372373HRESULT374WINAPI375WHvUnregisterPartitionDoorbellEvent(376_In_ WHV_PARTITION_HANDLE Partition,377_In_ const WHV_DOORBELL_MATCH_DATA* MatchData378);379380381#ifdef __cplusplus382}383#endif384385//#endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)386//#pragma endregion387388#endif // _WINHVAPI_H_389390391392393394#ifndef ext_ms_win_hyperv_hvplatform_l1_1_3_query_routines395#define ext_ms_win_hyperv_hvplatform_l1_1_3_query_routines396397398399//400//Private Extension API Query Routines401//402403#ifdef __cplusplus404extern "C" {405#endif406407BOOLEAN408__stdcall409IsWHvGetCapabilityPresent(410VOID411);412413BOOLEAN414__stdcall415IsWHvCreatePartitionPresent(416VOID417);418419BOOLEAN420__stdcall421IsWHvSetupPartitionPresent(422VOID423);424425BOOLEAN426__stdcall427IsWHvDeletePartitionPresent(428VOID429);430431BOOLEAN432__stdcall433IsWHvGetPartitionPropertyPresent(434VOID435);436437BOOLEAN438__stdcall439IsWHvSetPartitionPropertyPresent(440VOID441);442443BOOLEAN444__stdcall445IsWHvSuspendPartitionTimePresent(446VOID447);448449BOOLEAN450__stdcall451IsWHvResumePartitionTimePresent(452VOID453);454455BOOLEAN456__stdcall457IsWHvMapGpaRangePresent(458VOID459);460461BOOLEAN462__stdcall463IsWHvUnmapGpaRangePresent(464VOID465);466467BOOLEAN468__stdcall469IsWHvTranslateGvaPresent(470VOID471);472473BOOLEAN474__stdcall475IsWHvCreateVirtualProcessorPresent(476VOID477);478479BOOLEAN480__stdcall481IsWHvDeleteVirtualProcessorPresent(482VOID483);484485BOOLEAN486__stdcall487IsWHvRunVirtualProcessorPresent(488VOID489);490491BOOLEAN492__stdcall493IsWHvCancelRunVirtualProcessorPresent(494VOID495);496497BOOLEAN498__stdcall499IsWHvGetVirtualProcessorRegistersPresent(500VOID501);502503BOOLEAN504__stdcall505IsWHvSetVirtualProcessorRegistersPresent(506VOID507);508509#if defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_WIN10_VB)510511512#endif513514515BOOLEAN516__stdcall517IsWHvGetVirtualProcessorInterruptControllerStatePresent(518VOID519);520521#if defined(NTDDI_VERSION) && (NTDDI_VERSION >= NTDDI_WIN10_VB)522523524#endif525526527BOOLEAN528__stdcall529IsWHvSetVirtualProcessorInterruptControllerStatePresent(530VOID531);532533BOOLEAN534__stdcall535IsWHvRequestInterruptPresent(536VOID537);538539BOOLEAN540__stdcall541IsWHvGetVirtualProcessorXsaveStatePresent(542VOID543);544545BOOLEAN546__stdcall547IsWHvSetVirtualProcessorXsaveStatePresent(548VOID549);550551BOOLEAN552__stdcall553IsWHvQueryGpaRangeDirtyBitmapPresent(554VOID555);556557BOOLEAN558__stdcall559IsWHvGetPartitionCountersPresent(560VOID561);562563BOOLEAN564__stdcall565IsWHvGetVirtualProcessorCountersPresent(566VOID567);568569BOOLEAN570__stdcall571IsWHvGetVirtualProcessorInterruptControllerState2Present(572VOID573);574575BOOLEAN576__stdcall577IsWHvSetVirtualProcessorInterruptControllerState2Present(578VOID579);580581BOOLEAN582__stdcall583IsWHvRegisterPartitionDoorbellEventPresent(584VOID585);586587BOOLEAN588__stdcall589IsWHvUnregisterPartitionDoorbellEventPresent(590VOID591);592593#ifdef __cplusplus594}595#endif596597#endif // endof guard598599600