Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 107 additions & 27 deletions virtualization/hyper-v-on-windows/tlfs/datatypes/TOC.yml
Original file line number Diff line number Diff line change
@@ -1,56 +1,136 @@
- name: Overview
href: overview.md
- name: HV_CONNECTION_ID
href: HV_CONNECTION_ID.md
href: hv_connection_id.md
- name: HV_CONNECTION_INFO
href: hv_connection_info.md
- name: HV_CPUID_RESULT
href: hv_cpuid_result.md
- name: HV_CRASH_CTL_REG_CONTENTS
href: HV_CRASH_CTL_REG_CONTENTS.md
href: hv_crash_ctl_reg_contents.md
- name: HV_DEVICE_INTERRUPT_TARGET
href: HV_DEVICE_INTERRUPT_TARGET.md
href: hv_device_interrupt_target.md
- name: HV_GET_VP_CPUID_VALUES_FLAGS
href: hv_get_vp_cpuid_values_flags.md
- name: HV_GPA_MAPPING
href: hv_gpa_mapping.md
- name: HV_GPA_PAGE_NUMBER
href: hv_gpa_page_number.md
- name: HV_GVA
href: hv_gva.md
- name: HV_GVA_PAGE_NUMBER
href: hv_gva_page_number.md
- name: HV_INITIAL_VP_CONTEXT
href: HV_INITIAL_VP_CONTEXT.md
href: hv_initial_vp_context.md
- name: HV_INPUT_VTL
href: hv_input_vtl.md
- name: HV_INTERCEPT_ACCESS_TYPE_MASK
href: hv_intercept_access_type_mask.md
- name: HV_INTERCEPT_PARAMETERS
href: hv_intercept_parameters.md
- name: HV_INTERCEPT_PARAMETERS_EX
href: hv_intercept_parameters_ex.md
- name: HV_INTERCEPT_TYPE
href: hv_intercept_type.md
- name: HV_INTERRUPT_CONTROL
href: hv_interrupt_control.md
- name: HV_INTERRUPT_ENTRY
href: HV_INTERRUPT_ENTRY.md
href: hv_interrupt_entry.md
- name: HV_INTERRUPT_TYPE
href: hv_interrupt_type.md
- name: HV_INTERRUPT_VECTOR
href: hv_interrupt_vector.md
- name: HV_IO_PORT
href: hv_io_port.md
- name: HV_MAP_GPA_FLAGS
href: hv_map_gpa_flags.md
- name: HV_MESSAGE
href: HV_MESSAGE.md
href: hv_message.md
- name: HV_MESSAGE_TYPE
href: HV_MESSAGE_TYPE.md
href: hv_message_type.md
- name: HV_MSI_ENTRY
href: HV_MSI_ENTRY.md
href: hv_msi_entry.md
- name: HV_NESTED_ENLIGHTENMENTS_CONTROL
href: HV_NESTED_ENLIGHTENMENTS_CONTROL.md
href: hv_nested_enlightenments_control.md
- name: HV_PARTITION_CREATION_FLAGS
href: hv_partition_creation_flags.md
- name: HV_PARTITION_CREATION_PROPERTIES
href: hv_partition_creation_properties.md
- name: HV_PARTITION_ID
href: hv_partition_id.md
- name: HV_PARTITION_PROCESSOR_FEATURES
href: hv_partition_processor_features.md
- name: HV_PARTITION_PRIVILEGE_MASK
href: HV_PARTITION_PRIVILEGE_MASK.md
href: hv_partition_privilege_mask.md
- name: HV_PARTITION_PROPERTY_CODE
href: hv_partition_property_code.md
- name: HV_PORT_ID
href: hv_port_id.md
- name: HV_PORT_INFO
href: hv_port_info.md
- name: HV_PORT_TYPE
href: hv_port_type.md
- name: HV_PROXIMITY_DOMAIN_ID
href: hv_proximity_domain_id.md
- name: HV_PROXIMITY_DOMAIN_INFO
href: hv_proximity_domain_info.md
- name: HV_REGISTER_INTERCEPT_RESULT_PARAMETERS
href: hv_register_intercept_result_parameters.md
- name: HV_REGISTER_NAME
href: HV_REGISTER_NAME.md
href: hv_register_name.md
- name: HV_REGISTER_VALUE
href: HV_REGISTER_VALUE.md
href: hv_register_value.md
- name: HV_SPA_PAGE_NUMBER
href: hv_spa_page_number.md
- name: HV_STATS_OBJECT_IDENTITY
href: hv_stats_object_identity.md
- name: HV_STATS_OBJECT_TYPE
href: hv_stats_object_type.md
- name: HV_STATUS
href: hv_status.md
- name: HV_SVM_ENLIGHTENED_VMCB_FIELDS
href: HV_SVM_ENLIGHTENED_VMCB_FIELDS.md
href: hv_svm_enlightened_vmcb_fields.md
- name: HV_SYNIC_EVENT_FLAGS
href: HV_SYNIC_EVENT_FLAGS.md
href: hv_synic_event_flags.md
- name: HV_SYNIC_SINT_INDEX
href: hv_synic_sint_index.md
- name: HV_TIMER_MESSAGE_PAYLOAD
href: HV_TIMER_MESSAGE_PAYLOAD.md
href: hv_timer_message_payload.md
- name: HV_TRANSLATE_GVA_CONTROL_FLAGS
href: hv_translate_gva_control_flags.md
- name: HV_TRANSLATE_GVA_RESULT
href: hv_translate_gva_result.md
- name: HV_TRANSLATE_GVA_RESULT_EX
href: hv_translate_gva_result_ex.md
- name: HV_UNMAP_GPA_FLAGS
href: hv_unmap_gpa_flags.md
- name: HV_UNREGISTER_INTERCEPT_RESULT_PARAMETERS
href: hv_unregister_intercept_result_parameters.md
- name: HV_VIRTUALIZATION_FAULT_INFORMATION
href: HV_VIRTUALIZATION_FAULT_INFORMATION.md
href: hv_virtualization_fault_information.md
- name: HV_VMX_ENLIGHTENED_VMCS
href: HV_VMX_ENLIGHTENED_VMCS.md
href: hv_vmx_enlightened_vmcs.md
- name: HV_VP_ASSIST_PAGE
href: HV_VP_ASSIST_PAGE.md
href: hv_vp_assist_page.md
- name: HV_VP_INDEX
href: hv_vp_index.md
- name: HV_VP_SET
href: HV_VP_SET.md
href: hv_vp_set.md
- name: HV_VP_VTL_CONTROL
href: HV_VP_VTL_CONTROL.md
href: hv_vp_vtl_control.md
- name: HV_VTL
href: hv_vtl.md
- name: HV_X64_FP_CONTROL_STATUS_REGISTER
href: HV_X64_FP_CONTROL_STATUS_REGISTER.md
href: hv_x64_fp_control_status_register.md
- name: HV_X64_FP_REGISTER
href: HV_X64_FP_REGISTER.md
href: hv_x64_fp_register.md
- name: HV_X64_MSR_NPIEP_CONFIG_CONTENTS
href: HV_X64_MSR_NPIEP_CONFIG_CONTENTS.md
href: hv_x64_msr_npiep_config_contents.md
- name: HV_X64_SEGMENT_REGISTER
href: HV_X64_SEGMENT_REGISTER.md
href: hv_x64_segment_register.md
- name: HV_X64_TABLE_REGISTER
href: HV_X64_TABLE_REGISTER.md
href: hv_x64_table_register.md
- name: HV_X64_XMM_CONTROL_STATUS_REGISTER
href: HV_X64_XMM_CONTROL_STATUS_REGISTER.md
href: hv_x64_xmm_control_status_register.md
- name: HV_X64_REGISTER_SEV_GPA_PAGE
href: HV_X64_REGISTER_SEV_GPA_PAGE.md
href: HV_X64_REGISTER_SEV_GPA_PAGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@ author: alexgrest
ms.author: hvdev
ms.date: 10/15/2020
ms.topic: reference
ms.prod: windows-10-hyperv
---

# HV_CONNECTION_ID

## Overview
Connections are identified by 32-bit IDs. The high 8 bits are reserved and must be zero. All connection IDs are unique within a partition.

## Syntax
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
---
title: HV_CONNECTION_INFO
description: HV_CONNECTION_INFO data type
keywords: hyper-v
author: hvdev
ms.author: hvdev
ms.date: 08/28/2025
ms.topic: reference
ms.prod: windows-10-hyperv
---

# HV_CONNECTION_INFO

## Overview
Per-connection type descriptor used when establishing a connection (`HvCallConnectPort`). Only the union member matching `PortType` is interpreted; other members are zero.

## Syntax

```c
typedef enum
{
HvPortTypeDoorbell = 4,
} HV_PORT_TYPE;

typedef struct
{
HV_PORT_TYPE PortType;
UINT32 Padding;

union
{
struct
{
HV_GPA GuestPhysicalAddress;
UINT64 TriggerValue;
UINT64 Flags;
} DoorbellConnectionInfo;
};
} HV_CONNECTION_INFO;
```

### Port Types

| Enum | Value | Meaning | Use Cases |
|------|-------|---------|-----------|
| HvPortTypeDoorbell | 4 | Lightweight guest doorbell (write / trigger semantics) | Low latency memory-mapped notifications. |

### Connection Type Details

#### Doorbell Connections (HvPortTypeDoorbell)
**Purpose**: Memory-mapped notification mechanism with configurable trigger semantics.
**Configuration**:
- `GuestPhysicalAddress`: Target memory location for write operations
- `TriggerValue`: Expected value to trigger the doorbell (when using specific value matching)
- `Flags`: Controls trigger behavior and access pattern

### Doorbell Flags Configuration

| Flag | Value | Description |
|------|-------|-------------|
| HV_DOORBELL_FLAG_TRIGGER_SIZE_ANY | 0x00000000 | Trigger on any write operation regardless of size |
| HV_DOORBELL_FLAG_TRIGGER_SIZE_BYTE | 0x00000001 | Trigger only on 1-byte writes |
| HV_DOORBELL_FLAG_TRIGGER_SIZE_WORD | 0x00000002 | Trigger only on 2-byte writes |
| HV_DOORBELL_FLAG_TRIGGER_SIZE_DWORD | 0x00000003 | Trigger only on 4-byte writes |
| HV_DOORBELL_FLAG_TRIGGER_SIZE_QWORD | 0x00000004 | Trigger only on 8-byte writes |
| HV_DOORBELL_FLAG_TRIGGER_ANY_VALUE | 0x80000000 | Trigger on any written value (ignore TriggerValue) |

**Flag Combinations**:
- **Size-specific + value-specific**: Triggers only when the exact size and value match
- **Size-specific + HV_DOORBELL_FLAG_TRIGGER_ANY_VALUE**: Triggers on any write of the specified size
- **HV_DOORBELL_FLAG_TRIGGER_SIZE_ANY + value-specific**: Triggers when any write matches the value
- **HV_DOORBELL_FLAG_TRIGGER_SIZE_ANY + HV_DOORBELL_FLAG_TRIGGER_ANY_VALUE**: Triggers on any write operation

### Restrictions and Limitations
* **Doorbell connections**:
- Must not cross page boundaries
- Target GPA must be valid and accessible

## See Also
* [HvCallConnectPort](../hypercalls/HvCallConnectPort.md)
* [HV_PORT_TYPE](hv_port_type.md)
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
title: HV_CPUID_RESULT
description: HV_CPUID_RESULT
keywords: hyper-v
author: hvdev
ms.author: hvdev
ms.date: 11/07/2025
ms.topic: reference
---

# HV_CPUID_RESULT

The HV_CPUID_RESULT data type contains the result of a CPUID instruction execution. This structure holds the register values returned by the CPUID instruction for a specific function and subfunction.

## Syntax

```c
typedef union {
UINT32 AsUINT32[4];
struct
{
UINT32 Eax;
UINT32 Ebx;
UINT32 Ecx;
UINT32 Edx;
};
} HV_CPUID_RESULT;
```

### Members

- **Eax**: The value returned in the EAX register by the CPUID instruction
- **Ebx**: The value returned in the EBX register by the CPUID instruction
- **Ecx**: The value returned in the ECX register by the CPUID instruction
- **Edx**: The value returned in the EDX register by the CPUID instruction

The CPUID instruction returns processor identification and feature information in these four 32-bit registers. The specific meaning of each register's contents depends on the CPUID function and subfunction that was executed.

## See also

* [HvCallGetVpCpuidValues](../hypercalls/HvCallGetVpCpuidValues.md)
* [HV_PARTITION_ID](hv_partition_id.md)
* [HV_VP_INDEX](hv_vp_index.md)
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ author: alexgrest
ms.author: hvdev
ms.date: 10/15/2020
ms.topic: reference
ms.prod: windows-10-hyperv
---

# HV_CRASH_CTL_REG_CONTENTS
Expand All @@ -20,10 +21,11 @@ typedef union
UINT64 AsUINT64;
struct
{
UINT64 Reserved : 62; // Reserved bits
UINT64 CrashMessage : 1; // P3 is the PA of the message
// P4 is the length in bytes
UINT64 CrashNotify : 1; // Log contents of crash parameter
UINT64 Reserved : 58; // Reserved bits
UINT64 PreOSId : 3; // Crash occurred in the preOS environment
UINT64 NoCrashDump : 1; // Crash dump will not be captured
UINT64 CrashMessage : 1; // P3 is the PA of the message, P4 is the length in bytes
UINT64 CrashNotify : 1; // Log contents of crash parameter system registers
};
} HV_CRASH_CTL_REG_CONTENTS;
```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@ author: alexgrest
ms.author: hvdev
ms.date: 10/15/2020
ms.topic: reference
ms.prod: windows-10-hyperv
---

# HV_DEVICE_INTERRUPT_TARGET

## Syntax

```c

#define HV_DEVICE_INTERRUPT_TARGET_MULTICAST 1
#define HV_DEVICE_INTERRUPT_TARGET_PROCESSOR_SET 2

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
title: HV_GET_VP_CPUID_VALUES_FLAGS
description: HV_GET_VP_CPUID_VALUES_FLAGS data type
keywords: hyper-v
author: hvdev
ms.author: hvdev
ms.date: 09/08/2025
ms.topic: reference
ms.prod: windows-10-hyperv
---

# HV_GET_VP_CPUID_VALUES_FLAGS

## Overview

Control flags for `HvCallGetVpCpuidValues` hypercall that specify how CPUID values should be retrieved and processed for the target virtual processor.

## Syntax

```c
typedef union {
UINT32 AsUINT32;
struct {
UINT32 UseVpXfemXss : 1;
UINT32 ApplyRegisteredValues : 1;
UINT32 Reserved : 30;
};
} HV_GET_VP_CPUID_VALUES_FLAGS;
```

### Members

| Member | Description |
|--------|-------------|
| UseVpXfemXss | If set, use the VP's current XFEM/XSS values when synthesizing CPUID results |
| ApplyRegisteredValues | If set, apply any registered CPUID value overrides to the results |
| Reserved | Must be zero |

## See Also

- [HvCallGetVpCpuidValues](../hypercalls/HvCallGetVpCpuidValues.md)
- [HV_CPUID_RESULT](hv_cpuid_result.md)
Loading