Hyper-V Configuration Parameters
Дonfiguration surfaces exposed by Hyper-V on Windows Server 2025 with March 2026 patch.
Contents
-
§ Key Binaries 1.1 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualizationvmms.exe
vmwp.exe1.2 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Workervmms.exe
vmwp.exe1.3 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\VMLvmms.exe
vmcompute.exe
computecore.dll1.4 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Migrationvmms.exe
vmwp.exe1.5 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Replicationvmms.exe 1.6 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\VirtualDeviceDirectory\<CLSID>vmms.exe 1.7 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Worker\Fc\<port>vmms.exe 1.8 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Containersvmcompute.exe
vmusrv.dll1.9 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\FlexIOV…\TimeSync…\VmSession…\FibreChannel…\WorkerAppContainervmflexio.dll
icsvc.dll
vmsynthfcvdev.dll
vmwpctrl.dll1.10 HKLM\SOFTWARE\Microsoft\HgsClienthgclientservice.dll 1.11 Various SYSTEM\CurrentControlSet keys icsvc.dll
vmictimeprovider.dll
vmicrdv.dll
icsvcvss.dll1.12 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization(vsconfig.dll facade)vmms.exe
vmwp.exe1.13 Various OS keys vmms.exe
vmcompute.exe Registry — Kernel-Mode Drivers
§ Key Driver(s) 2.1 HKLM\SYSTEM\CurrentControlSet\Services\vid\Parametersvid.sys 2.2 HKLM\SYSTEM\CurrentControlSet\Services\winhvr\Parameters…\hvservice…\hvcrash\Parameterswinhv.sys
winhvr.sys
hvservice.sys
hvcrash.sys2.3 HKLM\SYSTEM\CurrentControlSet\Services\vmbus\Parameters…\vmbkmclr\Parameters…\hvsocketvmbus.sys
vmbusr.sys
vmbkmcl.sys
vmbkmclr.sys
hvsocket.sys2.4 HKLM\SYSTEM\CurrentControlSet\Services\storvsp…\storvsc\Parameters\Device…\vhdmp\Parametersstorvsp.sys
storvsc.sys
vhdmp.sys
vhdparser.sys
pvhdparser.sys
vmstorfl.sys2.5 HKLM\SYSTEM\CurrentControlSet\Services\VmsMp\Parametersvmswitch.sys 2.6 Per-device SW key (via WDF/PnP) pcip.sys 2.7 HKLM\SYSTEM\CurrentControlSet\Services\Video\VirtualizationHyperVideo.sys 2.8 HKLM\SYSTEM\CurrentControlSet\Services\hyperkbd\Parametershyperkbd.sys 2.9 HKLM\SYSTEM\CurrentControlSet\Services\wcifs\Parameterswcifs.sys 2.10 — (no driver-specific registry config) dmvsc.sys
vmgencounter.sys
vpcivsp.sys
VMBusHID.sys
…2.11 HKLM\SYSTEM\CurrentControlSet\Control\Hypervisor
+ BCD{hypervisorsettings}hvloader.dll
winhvr.sys
Sections below are populated by parallel extraction from decompiled binaries. See individual sections for per-component details and
binary!functionsource references.
1. Registry — User-Mode Services
Sources: vmms.exe (VM management service),
vmwp.exe (per-VM worker), vmcompute.exe (Host
Compute Service), computecore.dll,
vmmsprox.dll.
Primary base key for almost everything:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization
1.1.
Global host settings —
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization
| ValueName | Type | Binary | Purpose |
|---|---|---|---|
| AllowGen1VmScaleUp | REG_DWORD | vmms.exe | Allow scale-up of Gen1 VMs |
| AllowGen2VmScaleUp | REG_DWORD | vmms.exe | Allow scale-up of Gen2 VMs |
| AccessCheckFlags | REG_DWORD | vmms.exe!AuthorizationUtilities::Details::GetAccessCheckFlags | Authorization-manager access-check flag override (default 0) |
| DisableNonBufferedCopyWithFileFlush | REG_DWORD | vmms.exe | VHD copy IO policy |
| EnableGPUOvercommit | REG_DWORD | vmms.exe | Enable GPU overcommit |
| EnableSecureBootTemplateCache | REG_DWORD | vmms.exe | Cache Secure Boot templates |
| FhrTaskDrainTimeoutMs | REG_DWORD | vmms.exe!VmmsVmPhuManager shutdown | FHR task drain timeout on service stop (default 60 000 ms) |
| IfuErrataMitigations | REG_DWORD | vmms.exe!VmProcessorSettings::GetDefaultIfuErrataMitigations | In-field-update errata mitigation enable flag (default 0) |
| ManagementVtlDumpSizeOverrideMb | REG_DWORD | vmms.exe!CreateConfigurationForWorkerProcess | Management-VTL crash-dump size override in MB (default 512) |
| BiosEnableNetworkMediaState | REG_DWORD | vmms.exe!CreateConfigurationForWorkerProcess | Enable BIOS reporting of NIC media-connect state (default 0) |
| RequireSecureDeviceAssignment | REG_DWORD | vmms.exe | Require secure DDA |
| RequireSupportedDeviceAssignment | REG_DWORD | vmms.exe | Require supported DDA device |
| SkipMetrics | REG_DWORD | vmms.exe | Skip metrics collection |
| StartupWaitTimeout | REG_DWORD | vmms.exe!VmmsVirtualMachine::CreateInitContext | Seconds to wait for worker-process startup (default 300; 600 for shielded path) |
| VmPhuFeatures | REG_DWORD | vmms.exe!VmmsVmPhuManager::UpdatePhuSettingsFromRegistry | Per-host-update handle-brokering feature bitmask (default 0x1007 = 4103) |
| VssThreadPoolSize | REG_DWORD | vmms.exe | VSS thread-pool size |
| TraceVmmsWorkerManagerWPTracking | REG_DWORD | vmms.exe | WorkerManager WP-tracking trace flag |
| CheckpointValidatePerfmonPebs | REG_DWORD | vmms.exe | Perfmon PEBS validation at checkpoint |
| EnableMpx | REG_DWORD | vmms.exe | Enable Intel MPX |
| ForceSmtEnablement | REG_DWORD | vmms.exe | Force SMT even when policy disallows |
| TraceGuestStateFileDebugLogs | REG_DWORD | vmms.exe | Trace guest-state file debug logs |
| ShutdownTimeout | REG_DWORD | vmms.exe | SCM shutdown worker timeout |
| CurrentVmVersion | REG_SZ | vmms.exe | Current VM schema version |
| CompatibleVmVersion | REG_SZ | vmms.exe | Compatible VM schema version |
| CurrentVdevVersion | REG_SZ | vmms.exe | Current vdev version |
| CompatibleVdevVersion | REG_SZ | vmms.exe | Compatible vdev version |
| EnableExdiDebugger | REG_DWORD | vmwp.exe | Enable EXDI kernel debugger |
| GuestControlTimeoutInMilliseconds | REG_DWORD | vmwp.exe!VirtualMachine::GuestControlStart | Timeout waiting for guest-control start handshake (default 5000) |
| Firmware Version | REG_SZ | vmwp.exe | Firmware version string |
| UefiCrashDumpPath | REG_SZ | vmwp.exe | UEFI crash dump path |
| CpuIdHideHyperVLeaves | REG_DWORD | vmwp.exe | Hide Hyper-V CPUID leaves |
| StartVtl0TimeoutInSeconds | REG_DWORD | vmwp.exe | VTL0 start timeout |
| EnableAllZeroBufferWrite | REG_DWORD | vmwp.exe (restore-init, msvml_gmo_restore) | Allow writing all-zero buffers during saved-state restore (default 0) |
| HvsAsyncWarningTimeoutMs | REG_DWORD | vmwp.exe!HvsPerf init lambda | HVSocket async-op warning threshold in ms (default 10 000) |
| DisableResiliency | REG_DWORD | vmwp.exe | Disable worker resiliency |
| AllowSpillingForHvDeposits | REG_DWORD | vmwp.exe | Allow HV deposit spilling |
| UseSystemPartitionForHvDeposits | REG_DWORD | vmwp.exe | Use system partition for HV deposits |
| UseSystemPartitionForPhysicalBuffers | REG_DWORD | vmwp.exe | Use system partition for physical buffers |
| AutoHugePagesEnabled | REG_DWORD | vmwp.exe | Enable auto huge pages |
| InitialBufferSizeInBits | REG_DWORD | vmwp.exe!GpaAccessTrackerUtilities::ReadRegistryConfigValue | GPA access-tracker initial bitmap size in bits |
| InvocationKind | REG_DWORD | vmwp.exe!VmMigrationVDevOperationSettings::ExecutionPolicies | When to invoke VDev migration method (pre/post/around; default 0) |
| ErrorAction | REG_DWORD | vmwp.exe!VmMigrationVDevOperationSettings::ExecutionPolicies | How to treat errors from VDev migration method (ignore/fail; default 0) |
| InputListFilter | REG_DWORD | vmwp.exe!VmMigrationVDevOperationSettings::ExecutionPolicies | Filter applied to input VDev list before method invocation (default 0) |
| ListsTransform | REG_DWORD | vmwp.exe!VmMigrationVDevOperationSettings::ExecutionPolicies | Transform rule applied across input/output VDev lists (default 0) |
| OperationFlags | REG_DWORD | vmwp.exe!VmMigrationVDevOperationSettings::ExecutionPolicies | Bitmask controlling per-method VDev migration op behavior (default 0) |
| EnableVirtualSlitRawValues | REG_DWORD | vmwp.exe | Enable virtual SLIT raw values |
| MinVmVersionForCpuBasedMitigations | REG_SZ | vmwp.exe | Min VM version for CPU mitigations |
| ForceRsbaOn | REG_DWORD | vmwp.exe | Force RSBA on |
| NoAutomaticSmtEnablement | REG_DWORD | vmwp.exe | Disable auto-SMT enablement |
| EmulationEnabled | REG_DWORD | vmwp.exe | CPU emulation enabled |
| WaitForDebuggerOnEmulationFailure | REG_DWORD | vmwp.exe | Wait for debugger on emulation fail |
| Enabled | REG_DWORD | vmwp.exe!MemoryManager::CreateRam (under GpaAccessTracker subkey — NOT a top-level flag) | Enables GPA access-tracker logging during RAM create |
| Interfaces | REG_MULTI_SZ | vmwp.exe!ReadSingleVDevClassInfo | List of interface GUIDs supported by a virtual-device class (per-VDev subkey) |
| ServerExecutable | REG_SZ | vmcompute.exe | HCS server executable |
Per-VM subkey:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\<VM-GUID>
— stores Description, ElementName
(REG_SZ).
1.2.
Worker tuning —
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Worker
| ValueName | Type | Purpose |
|---|---|---|
| PendingOperationWaitSeconds | REG_DWORD | Wait time for pending worker ops |
| ValidatePerfmon | REG_DWORD | Validate perfmon on worker |
| ValidatePerfmonPebs | REG_DWORD | Validate perfmon PEBS |
| ValidatePerfmonIpt | REG_DWORD | Validate perfmon IPT |
| AllowEarlyRealize | REG_DWORD | Allow early VHD realize |
| IncludeFixingRealizedVhdAcls | REG_DWORD | Fix VHD ACLs on realize |
| EventLogProgressIntervalSec | REG_DWORD | Event-log progress interval |
| CopyFileApiConfig | REG_DWORD | CopyFile API variant for storage-migration (vmms.exe!StorageMigrationBase::CopyFileW) |
| FileSystemsToSkipParentPathTransformation | REG_MULTI_SZ | FS names skipped in parent-path rewrite (vmms.exe!StorageMigrationBase::GetParentPath) |
| FcWMIQueryRetryCount | REG_DWORD | FC WMI query retry count |
| HbaLunTimeout | REG_DWORD | HBA LUN timeout |
| HideHypervisorPresent | REG_DWORD | Hide hypervisor CPUID leaves (vmwp.exe) |
| MaxNestedTlbSize | REG_DWORD | Max nested TLB size 0..10; values >10 silently rejected (vmwp.exe; default 0 = off) |
| RamOpConcurrencyMin | REG_DWORD | Min RAM-op worker threads (vmwp.exe!GmoRamOperation::Initialize; default 4; must be ≤ RamOpConcurrencyMax) |
| RamOpConcurrencyMax | REG_DWORD | Max RAM-op worker threads (vmwp.exe!GmoRamOperation::Initialize; default 16; must be ≥ RamOpConcurrencyMin) |
| RamOpConcurrencyMemScale | REG_DWORD | Memory-per-thread scale for RAM-op concurrency (vmwp.exe!GmoRamOperation::Initialize; default 0) |
| RamOpCompressDisableMergePageRuns | REG_DWORD | Disable merging of compressed zero-page runs (vmwp.exe!GmoRamOperation::Initialize; default 0) |
| DisableTemplateFilePrefetch | REG_DWORD | Skip template-VM file prefetch (vmwp.exe!WorkerConfiguration::InitializeRuntimeStateFromTemplate; default 0) |
| SaveVmOnTripleFaultFile | REG_SZ | Path for saved-state file on guest triple-fault (vmwp.exe!GuestErrorSaveStateFile) |
| SaveVmOnBugcheck | REG_DWORD | Save VM state on guest bugcheck instead of reset (vmwp.exe!WorkerConfiguration::SaveVmOnGuestBugcheck; default 0) |
1.3.
VML (Virtualization Management Library) —
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\VML
Shared by vmms.exe, vmcompute.exe, computecore.dll.
| ValueName | Type | Purpose |
|---|---|---|
| LeakWaitSeconds | REG_DWORD | Leak-detection wait |
| TraceFlags | REG_DWORD | Tracing flags |
| StopLevel | REG_DWORD | Debug stop level |
| DebugBreakEnabled | REG_DWORD | Enable debug break |
| TraceLevel | REG_DWORD | Global trace level |
| ClientAssertMask | REG_DWORD | Assert-handling bitmask |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\VML\TraceLevelsEnabled
— per-channel trace levels; value names are Trace0,
Trace1, … (N = channel index), each REG_QWORD.
1.4.
Live Migration —
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Migration
| ValueName | Type | Purpose |
|---|---|---|
| EnableVirtualSystemMigration | REG_DWORD | Master enable for LM |
| EnableLoopbackMigration | REG_DWORD | Allow loopback migration |
| EnableVirtualSystemToSuspendedMigration | REG_DWORD | Migration to suspended state |
| AuthenticationType | REG_DWORD | Migration auth type — 0 = CredSSP,
1 = Kerberos (matches
Msvm_VirtualSystemMigrationServiceSettingData.AuthenticationType
ValueMap and the
Set-VMHost -VirtualMachineMigrationAuthenticationType {CredSSP|Kerberos}
cmdlet) |
| UseStorageCachedCredentials | REG_DWORD | Use cached creds for storage migration |
| MaximumActiveVmMigrationCount | REG_DWORD | Max active VM migrations (default 2; no upper cap enforced) |
| MaximumActiveStorageMigrationCount | REG_DWORD | Max active storage migrations (default 2; no upper cap enforced) |
| MaximumActiveTransfers | REG_DWORD | Max active transfers (default 6; valid 6..1006 — out-of-range resets to 6) |
| EnableCompression | REG_DWORD | Enable compression |
| EnableSmbMemoryCompression | REG_DWORD | SMB memory compression |
| EnableSmbStorageCompression | REG_DWORD | SMB storage compression |
| EnableSmbTransport | REG_DWORD | SMB transport enable |
| EnableAccessTracking | REG_DWORD | Enable access tracking |
| ClusterCommonNodeVmSet | REG_SZ | Cluster common node VM set |
| CompressorCpuRequirement | REG_DWORD | Compressor CPU requirement |
| DecompressorCpuRequirement | REG_DWORD | Decompressor CPU requirement |
| ExtraCompressorBufferCount | REG_DWORD | Extra buffers beyond per-worker baseline (default 1; vmwp.exe!GetCompressorBufferCount) |
| CompressorBufferSize | REG_DWORD | Compressor buffer size |
| VplessNodeCompressorVpCount | REG_DWORD | Compressor VP count on VP-less node: 0 = off (default), 1..64; values >64 capped to 64 (vmwp.exe!GetCompressorWorkerCount) |
| CompressorLpUtilizationHighThreshold | REG_DWORD | LP CPU % above which compressor throttles down (default 85; max 100 — values >100 capped; vmms.exe!GetCompressorLpMonitorThresholds) |
| CompressorLpUtilizationLowThreshold | REG_DWORD | LP CPU % below which compressor scales up (default 70; capped at HighThreshold if LowThreshold > HighThreshold) |
| LmMemoryChunkPageCount | REG_DWORD | LM memory-transfer chunk size in pages (default 0x4000 = 16384; min 1; max 0x100000 = 1M pages; vmwp.exe!VmMigrationSettings::GetLmMemoryChunkPageCount) |
| LowNetworkUtilizationHigherThresholds | REG_DWORD | Upper % bound for "low-network" detection (default 40) |
| LowNetworkUtilizationLowerThresholds | REG_DWORD | Lower % bound for "low-network" detection (default 20) |
| MemoryWalkerCount | REG_DWORD | Threads scanning guest memory during migration (default 4; min 1; max 128 — values >128 capped to 128; 0 = use default) |
| NetworkBufferCount | REG_DWORD | Network buffer count (default 32; min 1; max 1024 — values >1024 capped; 0 = use default) |
| TcpTransportCompletionThreads | REG_DWORD | TCP-transport IO-completion threads (default 4; min 1; max 64 — values >64 capped; 0 = use default) |
| SmbTransportMaximumPagesPerSendIo | REG_DWORD | Max pages per SMB send I/O (default 256; 64 for compressed transfers) |
| TcpBufferSize | REG_DWORD | TCP send/recv buffer size |
| TcpSocketAsyncReceiveBufferSize | REG_DWORD | Async receive buffer size |
| MemoryTransferSMBShareMaxUses | REG_DWORD | Max concurrent connections on LM memory-transfer SMB share (vmms.exe!VmmsVmMigrationVidShare::SmbShareCreate) |
| StorageMigrationSMBShareMaxUses | REG_DWORD | Max concurrent connections on storage-migration SMB share (default 3; vmms.exe!VmmsVsmFileShare::SmbShareCreate) |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Migration\Networks\<n>
— per-network live-migration entry (one subkey per configured network,
<n> = index):
| ValueName | Type |
|---|---|
| SubnetNumber | REG_SZ |
| PrefixLength | REG_DWORD |
| Metric | REG_DWORD |
| Tags | REG_MULTI_SZ |
1.5.
Hyper-V Replica —
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Replication
| ValueName | Type | Purpose |
|---|---|---|
| ApplyChangeReplicaDiskThrottle | REG_DWORD | Max pending apply-log queue length per replica disk (default 4; vmms.exe!FrCtLogApplyThrottler::GetMaxQueueLength) |
| ApplyVHDLimit | REG_DWORD | Max concurrently-applying VHDs per replica VM (vmms.exe!FrCtLogApplyThrottler::GetVHDsPerVM) |
| ApplyVMLimit | REG_DWORD | Max concurrently-applying VMs per primary host (vmms.exe!FrCtLogApplyThrottler::GetVMsPerPrimary) |
| EnableFirstApplyLogFileCheck | REG_DWORD | Verify parent-ID on first apply log file (default 0; vmms.exe!FrCtLogApplier::IsFirstLogFileParentIdCheckEnabled) |
| ReplicaStorageLocation | REG_SZ | Default replica storage path |
| TrustGroup | REG_SZ | Replica trust group |
| DisplayName | REG_SZ | Replication broker display name |
| AllowedAuthenticationType | REG_DWORD | Allowed replication auth — 1 = Kerberos,
2 = Certificate, 3 = Both (from
Msvm_ReplicationServiceSettingData ValueMap) |
| MonitoringInterval | REG_DWORD | Monitoring interval |
| MonitoringStartTime | REG_DWORD | Monitoring start time |
| IsBrokerOptional | REG_DWORD | Cluster broker role is optional for replication (default 0; vmms.exe!FailoverReplicationSettings::IsBrokerOptional) |
| DisableCertRevocationCheck | REG_DWORD | Disable cert revocation check |
| RecoveryServerEnabled | REG_DWORD | Recovery server enabled |
| AllowUntrustedRootCAOnReplica | REG_DWORD | Allow untrusted root CA on replica |
| CTBlockStageClientTimeoutMs | REG_DWORD | Client-side timeout for CT block-stage RPC (default 600 ms; vmms.exe!FrCtApi::GetBlockStageClientTimeout) |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Replication\CTDiagnostics
| ValueName | Type |
|---|---|
| GroupSwitchTraceFlag | REG_SZ |
| CTTraceFlags | REG_DWORD |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Replication\ReferencePoint
| ValueName | Type |
|---|---|
| CDPReferencePointAgeingTimeoutInHours | REG_QWORD |
| StageTimeOutsDefined | REG_SZ |
1.6.
Virtual Device Directory —
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\VirtualDeviceDirectory\<CLSID>
Defines every virtual device (synthetic NIC, SCSI controller, vGPU, etc.).
| ValueName | Type | Purpose |
|---|---|---|
| Name | REG_SZ | Device display name |
| AdditionalClassNames | REG_MULTI_SZ | Additional class names |
| RootDeviceType | REG_SZ | Root device type |
| SupportedResourceTypes | REG_MULTI_SZ | Supported CIM resource types |
| SupportedResourceType | REG_SZ | Supported resource type (single) |
| WmiFactoryCLSID | REG_SZ | WMI factory CLSID |
| WmiComponentCLSID | REG_SZ | WMI component CLSID |
| Type | REG_DWORD | Device type |
| SupportedSubTypes | REG_MULTI_SZ | Supported subtypes |
| HotAddSupportedSubTypes | REG_MULTI_SZ | Hot-add supported subtypes |
| HotRemoveSupportedSubTypes | REG_MULTI_SZ | Hot-remove supported subtypes |
| VMVersionIntroduced | REG_SZ | Min VM version for device |
| IsPresentByDefault | REG_DWORD | Present by default |
| MaxParentPools | REG_DWORD | Max parent pools |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\ComponentDirectory:
Context (REG_BINARY), Flags (REG_DWORD),
ServicingVersion (REG_SZ).
1.7.
Virtual Fibre Channel —
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Worker\Fc\<port>
| ValueName | Type | Purpose |
|---|---|---|
| PortFriendlyName | REG_SZ | Virtual FC port friendly name |
| HbaInstanceName | REG_SZ | HBA instance name |
| NodeWWN | REG_BINARY | FC NodeWWN |
| PortWWN | REG_BINARY | FC PortWWN |
| SanTag | REG_SZ | SAN tag |
| SwitchFriendlyName | REG_SZ | FC switch friendly name |
| SwitchName | REG_SZ | FC switch name |
| StaticPortFriendlyName | REG_SZ | Static port friendly name |
| StaticPortName | REG_SZ | Static port name |
Fabric subkey: CurrentWWNNAddress,
MinimumWWPNAddress, MaximumWWPNAddress,
CurrentWWPNAddress (all REG_BINARY).
1.8.
Containers / Utility VM —
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Containers
Sources: vmcompute.exe (UVM lifecycle),
vmusrv.dll (VSMB server).
| ValueName | Type | Binary | Purpose |
|---|---|---|---|
| TemplateVmCount | REG_DWORD | vmcompute.exe | Pre-warmed template VM count |
| DirectMapRangeSizeMB | REG_DWORD | vmcompute.exe | Direct-map range size (MB) |
| ProcessorCount | REG_DWORD | vmcompute.exe | UVM processor count |
| SharedMemorySizeMB | REG_DWORD | vmcompute.exe | UVM shared-memory size (MB) |
| VSmbWorkerCpus | REG_DWORD | vmusrv.dll (Smb2 init) |
VSMB server worker-thread count |
| VSmbDisableOplocks | REG_DWORD | vmusrv.dll | Disable oplocks for VSMB server |
| VSmbDisablePseudoOplocks | REG_DWORD | vmusrv.dll | Disable pseudo-oplocks |
| VSmbForceLevelIIOplocks | REG_DWORD | vmusrv.dll | Force level-II oplocks only |
| VSmbMaxCredits | REG_DWORD | vmusrv.dll | SMB2 credit ceiling per VSMB session |
| VSmbEnableTestShares | REG_DWORD | vmusrv.dll | Expose VSMB test shares (diag) |
Subkeys: UtilityVm,
UtilityVm\Memory Management, Diagnostics,
Debug, Credentials\<cred name>
(REG_BINARY saved credentials).
1.9.
Per-feature subtrees under
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization
Keys populated by worker DLLs, separate from the Worker/VML/Migration trees.
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\FlexIOV
— read by vmflexio.dll!Settings::Query*:
| ValueName | Type | Default | Purpose |
|---|---|---|---|
| Vtl2CommunicationErrorAction | REG_DWORD | 1 (valid 1-2) | Action on VTL2 comms error (1 = log, 2 = bugcheck-class) |
| Vtl2DeviceBindingTimeoutSeconds | REG_DWORD | 60 | VTL2 device-binding timeout |
| (disabled-device list) | REG_MULTI_SZ | - | WHEA PFA disabled-device GUID list
(Settings::QueryWheaPfaDeviceDisabled) |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\TimeSync
— read by icsvc.dll (IC TimeSync core):
| ValueName | Type | Default | Purpose |
|---|---|---|---|
| TimeSampleWindowInMicroseconds | REG_DWORD | - | Time-sample window in µs (preferred) |
| TimeSampleWindow | REG_DWORD | - | Legacy µs form (fallback) |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\VmSession
— read by icsvc.dll (PowerShell Direct listener):
| ValueName | Type | Default | Purpose |
|---|---|---|---|
| RequirePsDirectAuthentication | REG_DWORD | - | Require authentication for PowerShell Direct sessions |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\PerformanceTracing
— opened by vmdynmem.dll to gate extra perf tracing (subkey
existence = enable).
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\FibreChannel
— read by vmsynthfcvdev.dll, REG_MULTI_SZ list of GUIDs for
FC devices disabled for synthetic passthrough.
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\MinimumMacAddress
/ MaximumMacAddress (REG_BINARY, 6 bytes)
— host MAC pool range, read by VmSynthNic.dll and
NetMgmtIF.dll.
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Worker\CurrentMacAddress
(REG_BINARY) — last allocated MAC cursor, read and written by
MAC allocator.
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\WorkerAppContainer
(REG_DWORD) — read by
vmwpctrl.dll!VmWpCtrl::LoadWorkerAppContainerPolicy; gates
AppContainer isolation for vmwp.exe worker process.
1.10.
Host Guardian Service client —
HKLM\SOFTWARE\Microsoft\HgsClient
Read by hgclientservice.dll!HgRegistryConfiguration
(bound via hgsclientplugin.dll). Separate from the
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization
tree.
| ValueName | Type | Default | Purpose |
|---|---|---|---|
| Mode | REG_SZ | - | HGS client mode
(RegistryUtilities::QueryRegistryKeyForString) |
| LocalCACertSupported | REG_DWORD | 0 | Enable local CA-cert path (non-HGS attestation) |
| MaxRetries | REG_DWORD | - | HTTP retry count for HGS calls |
| RequestTimeout | REG_DWORD | - | Single-HTTP-request timeout (ms) |
| OperationTimeout | REG_DWORD | - | Total-operation timeout (ms) |
| FallbackService | REG_MULTI_SZ | - | Fallback HGS service URL list |
The MSFT_HgsClientConfiguration WMI class (sec 4.5) is a
view over this key.
1.11. Integration-service / RDP / time provider keys
HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider\Parameters\IPC\UniqueId(REG_SZ) — persisted byicsvc.dll!ICTimeSyncIpc::PersistUniqueId, read byvmictimeprovider.dll!ICTimeSyncIpc::Get*to match W32Time provider identity.HKLM\SYSTEM\CurrentControlSet\Services\VmHostAgent\Parameters\VMEndpoints\<VM-GUID>(REG_BINARY blobs) — per-VM RDP endpoint persistence, read/written byvmicrdv.dll.HKLM\SOFTWARE\Microsoft\Virtualization\ExcludedVssWriters\ExcludedWriters(REG_MULTI_SZ) — read byicsvcvss.dll; VSS writer GUIDs skipped during host-initiated backup.HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Reliability\Shutdown— written byicsvcvss.dll!VssClientBase::ChangeRegistryValuesForPlannedShutdown:Comment,ReasonCode,Timestamp(planned-shutdown tagging, copiesHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Reliability\LastAliveStamp).
1.12.
Host-wide settings facade —
vsconfig.dll!VirtualizationSettings
Central ISettingsStore facade used by
vmms.exe / worker processes / wizards. Backing store
resolves to keys under
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization;
the properties below are named lookups exposed by the facade (each has a
dedicated Get*/Set* method; the literal
value-name is the property name unless overridden by the store):
| Property | Purpose |
|---|---|
AllowFirmwareLoadFromFile |
Allow UEFI firmware to be loaded from arbitrary file |
AllowedHashAlgorithms |
Permitted TPM/attestation hash algorithms |
AzureFeatureSetEnabled |
Master gate for Azure-specific feature branches |
BalancerIncludeMinroot |
Include Minroot in CPU balancer scope |
ConfigurationStorePath |
Defaults to
%ProgramData%\Microsoft\Windows\Hyper-V |
CompatibleVmVersion / CurrentVmVersion /
DefaultVmVersion / ServicingVmVersion |
VM config-version policy (all four readable individually) |
DefaultVirtualHardDiskCachingMode |
Default VHD cache mode for newly created VHDs |
DisableSelfSignedCertificateGeneration |
Block self-signed cert fallback |
EnableFirmwareDebugging |
Enable UEFI debug output |
EnhancedMode |
Default Enhanced Session Mode state for new VMs |
HyperVLowMemoryThresholdInPages |
Host low-memory threshold |
ManagementVtlUpgradePolicy |
Management-VTL upgrade policy |
MaximumPressureLevelVmStartup |
Memory-pressure level above which VM start is refused |
MemoryAllocationPolicy |
VM-memory allocator policy |
MetricsFlushInterval |
Resource-metering flush cadence |
NumaSpanning |
Global NUMA-spanning default |
RamReservationPolicy |
Host RAM reservation policy |
SubnodePackingOrder |
NUMA subnode packing order |
AddTrustedIssuerCertificateHash /
GetAuthCertificateHash |
HGS/KP trusted issuer hashes, host auth cert |
1.13. Other user-mode keys read
HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters→MaxConnections(REG_DWORD) —vmms.exefor WinRM backingHKLM\SYSTEM\CurrentControlSet\Control\Network\Interfaces\{GUID}\Configuration—vmms.exe(vSwitch NIC config, REG_BINARY)HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{GUID}—vmms.exe(IP config)HKLM\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces\{GUID}—vmms.exe(NetBT config)HKLM\SYSTEM\CurrentControlSet\Control\StorVSP\PrefixMap\<prefix>— read bycomputecore.dll,vmchipset.dll!GetVirtualDiskPrefixandvmsynthstor.dll!SynthStorAttachment::Mount; maps disk prefix → device class GUID (fallback{f916c826-f0f5-4cd9-be68-4fd638cf9a53})HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management—vmcompute.exe(system memory tuning reads)
2. Registry — Kernel-Mode Drivers
All drivers read their tunables from
HKLM\SYSTEM\CurrentControlSet\Services\<driver>\Parameters
via RtlQueryRegistryValues /
IoOpenDeviceRegistryKey unless noted.
2.1. VID (Virtual ID Driver) —
vid.sys
Base key:
HKLM\SYSTEM\CurrentControlSet\Services\vid\Parameters.
Reader helpers: VidRegistryQueryUINT32[WithDefault] /
…UINT64[WithDefault] / …Binary — called from
the setup functions listed in the "Function" column.
| ValueName | Type | Function | Purpose | Default |
|---|---|---|---|---|
| ForceSmallPages | REG_DWORD | VidDeviceAddVsmmLayerSetup | Force 4K GPA pages (no 2M/1G) | 0 |
| ForceZeroOnFree | REG_DWORD | VidDeviceAddVsmmLayerSetup | Zero guest pages on free | 0 |
| UsePoolForMbpArray | REG_DWORD | VidDeviceAddVsmmLayerSetup | Allocate MBP array from pool vs dedicated region | 0 |
| SkipSmallLocalAllocations | REG_DWORD | VidDeviceAddVsmmLayerSetup | Bypass small local-alloc path | 1 |
| FreezeTimeInModernStandby | REG_DWORD | VidDeviceAddVsmmLayerSetup | Freeze guest time during Modern Standby | 1 |
| ExoDeviceEnabled | REG_DWORD | VidExopRegKeyNotificationHandler | Expose \Device\VidExo partition API
(Xbox/GameCore) |
0 |
| ExoDeviceEnabledClient | REG_DWORD | VidExopRegKeyNotificationHandler | Exo device accessible to non-admin clients | 0 |
| PageCombiningInterval | REG_DWORD | VsmmpRegQuery | Page-combining scan interval, sec (0 = off) | 0 |
| DaxRegularFileBackedEnabled | REG_DWORD | VsmmDaxFilepLockInputValidation | Allow regular-file-backed DAX MBP | 0 |
| MemoryReservePercentage | REG_DWORD | VsmmMemReservepQueryParametersPercentage | Top-level reserve percent | 0 |
| MemoryReserveAbove4GBOnly | REG_DWORD | VsmmMemReservepQueryParameters | Allocate reserve only above 4 GB | 0 |
| MemoryReserveHugePagesOnly | REG_DWORD | VsmmMemReservepQueryParameters | Reserve only 1 GB pages | 0 |
| HvPreDepositPagesPerGbMemory | REG_QWORD | VsmmHvpMemPreDepositRegistryQuery | HV pre-deposit pages per GB of host RAM | 590 |
| HvPreDepositPagesPerVp | REG_QWORD | VsmmHvpMemPreDepositRegistryQuery | HV pre-deposit pages per VP | 20 |
| HvMemWithdrawalMinPagesPerWorker | REG_QWORD | VsmmHvpMemPreDepositRegistryQuery | Min pages per HV mem-withdraw worker | 0 |
| HvMemWithdrawalProcessorCapFactor | REG_DWORD | VsmmHvpMemPreDepositRegistryQuery | Cap factor for HV mem-withdraw workers | 0 |
| IgnoreMemPart | REG_DWORD | VsmmMemPartSetupPhase0 | Ignore memory-partition config | 0 |
| SoftRestartCount | REG_QWORD | VsmmHvMemPartpRegister | Persisted soft-restart generation | 0 |
| ForceDeferredCommit | REG_DWORD | VidPartitionIoctlSetup | Force deferred GPA commit | 0 |
| ForcePinBackingPages | REG_DWORD | VidPartitionIoctlSetup | Force pin of backing pages | 0 |
| FaultClusterSizeShift | REG_DWORD | VidPartitionIoctlSetup | Valid 0..15 — log2 of fault cluster size in pages
(1 << N 4K pages = cluster size); written to
partition flags bits 9-12 |
0 |
| DirectMapFaultClusterSizeShift | REG_DWORD | VidPartitionIoctlSetup | Valid 0..15 — same log2-pages semantics but for
direct-mapped regions; written to partition flags bits 13-16 |
0 |
| PageBackingSize | REG_DWORD | VidPartitionIoctlSetup | Valid 0..2 — page backing class:
0 = default (4 KB), 1 = 2 MB huge page,
2 = 1 GB huge page; written to bits 0-1 |
0 |
| ForcePageBackingSizeRequired | REG_DWORD | VidPartitionIoctlSetup | When non-zero, fails VM start if the requested
PageBackingSize class is unavailable (bit 2 of
field+32) |
0 |
| PageMappingSize | REG_DWORD | VidPartitionIoctlSetup | Valid 0..2 — page mapping class (granularity of GPA→SPA
mapping entries, same 4K/2M/1G semantics); written shifted into bits
3-4 |
0 |
| ForceSmallGpaMappings | REG_DWORD | VidPartitionIoctlSetup | Force small GPA mappings | 0 |
HKLM\SYSTEM\CurrentControlSet\Services\vid\Parameters\MemoryReserve\<NUMA>
— per-NUMA-node memory reserve:
| ValueName | Type |
|---|---|
| SizeInMB | REG_QWORD |
| Percentage | REG_DWORD |
| IoSpaceSizeInMB | REG_QWORD |
HKLM\SYSTEM\CurrentControlSet\Services\vid\Parameters\MemoryReserve\<partition>
— per-partition reserve policy:
| ValueName | Type | Default |
|---|---|---|
| HugePagesOnly | REG_DWORD | — |
| Above4GBOnly | REG_DWORD | — |
| UseSystemPartitionForHvDeposits | REG_DWORD | — |
| UseSystemPartitionForPhysicalBuffers | REG_DWORD | — |
| AllowSpillingForHvDeposits | REG_DWORD | — |
| AllowNumaSpanning | REG_DWORD | — |
| AllowPostKsrCreate | REG_DWORD | 1 |
| TargetSizeInMB | REG_QWORD | — |
HKLM\SYSTEM\CurrentControlSet\Services\vid\Parameters\MemoryReserve\Primary\NumaIoSpaceDemotionCounts
— REG_BINARY blob.
HKLM\SYSTEM\CurrentControlSet\Services\vid\Parameters\VirtStackMetadata\UseNonMirroredPartition
— REG_DWORD.
Related keys outside vid's own service path — documented in §2.11
below (HKLM\SYSTEM\CurrentControlSet\Control\Hypervisor is
shared between vid, hvloader and
winhvr).
2.2.
Hypervisor interface — winhv.sys / winhvr.sys
/ hvservice.sys / hvcrash.sys
winhv.sys has no direct registry reads
— it is pure hypercall glue. All tuning goes via winhvr.sys
(root-partition path).
| Key | ValueName | Type | Driver | Function | Purpose | Default |
|---|---|---|---|---|---|---|
HKLM\SYSTEM\CurrentControlSet\Control\Hypervisor |
DfssEnabled | REG_DWORD | winhvr.sys | WinHvpInitializeXSchedulerSupport | Distributed Fair Share Scheduler gate (writes 0 if reg says 1 = disable) | 1 |
HKLM\SYSTEM\CurrentControlSet\Services\hvservice
(subkey path unresolved — static UNICODE_STRING in .rdata) |
(2 values, names unresolved in decompilation: static UNICODE_STRINGs at binary offsets 0x7110 and 0x70C0) | REG_BINARY | hvservice.sys | HbEvtpSetLocalDiagnosticsEventSources → WinHvSetEventLogGranularSources | Two binary arrays: first-source-list and second-source-list parameters for granular ETW event-source control of the hypervisor log | - |
HKLM\SYSTEM\CurrentControlSet\Services\hvcrash\Parameters |
DebugFlags | REG_DWORD | hvcrash.sys | Diagnostics::Initialize (via WDF
WdfRegistryQueryULong) |
bit0 = DbgPrintOnError, bit1 =
DbgBreakOnError |
0 |
2.3.
VMBus — vmbus.sys / vmbusr.sys /
vmbkmcl.sys / vmbkmclr.sys /
hvsocket.sys
Base key prefix:
HKLM\SYSTEM\CurrentControlSet\Services\.
| Key | ValueName | Type | Driver | Function | Purpose |
|---|---|---|---|---|---|
HKLM\SYSTEM\CurrentControlSet\Services\vmbus\Parameters |
RetryPostMessage | REG_DWORD | vmbusr.sys | DvReadRegistryValueUINT32 | HvPostMessage retry count |
HKLM\SYSTEM\CurrentControlSet\Services\vmbus\Parameters |
AllowedDevicesWhenIsolated | REG_DWORD | vmbus.sys | XPartGetAllowedDevicesWhenIsolatedValue | Bitmask of VMBus device classes allowed when partition is isolated (default 0) |
HKLM\SYSTEM\CurrentControlSet\Services\vmbus (device
Parameters) |
DedicatedProcessor | REG_DWORD | vmbus.sys / vmbusr.sys | VmbChannel setup | Dedicate processor to channel |
HKLM\SYSTEM\CurrentControlSet\Services\vmbus (device
interface) |
InstanceGuid | REG_SZ | vmbus.sys | enum | Device-interface instance GUID |
HKLM\SYSTEM\CurrentControlSet\Services\vmbus (device
interface) |
UserDefined | REG_SZ | vmbus.sys | enum | UserDefined subkey |
HKLM\SYSTEM\CurrentControlSet\Services\vmbkmcl |
ImagePath | REG_EXPAND_SZ | vmbkmcl.sys / vmbkmclr.sys | InitializeTelemetryAssertsKM | Client driver image path (telemetry-assert reporting) |
HKLM\SYSTEM\CurrentControlSet\Services\vmbkmclr\Parameters |
TraceLogPacketDelayThresholdSec | REG_DWORD | vmbkmclr.sys | KMCL trace-threshold init | VMBus packet-delay trace threshold (default 0 s) |
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization |
AzureFeatureSet | REG_DWORD | hvsocket.sys | — | Enable Azure feature set |
HKLM\SYSTEM\CurrentControlSet\Services\hvsocket (device
interface) |
LocalAddress | REG_SZ (GUID) | hvsocket.sys | Provider local address | |
HKLM\SYSTEM\CurrentControlSet\Services\hvsocket (device
interface) |
ParentAddress | REG_SZ (GUID) | hvsocket.sys | Provider parent address |
2.4.
Storage VSP/VSC — storvsp.sys / storvsc.sys /
vhdmp.sys / vhdparser.sys /
pvhdparser.sys / vmstorfl.sys
storvsp —
HKLM\SYSTEM\CurrentControlSet\Services\storvsp. All values
read in VspGetSettingsFromRegistry via helper
VspGetRegistryUINT32, except
OverrideParser/ServiceName
(parser-registration subkeys, see below).
| ValueName | Type | Purpose | Default |
|---|---|---|---|
| MaximumAdapterTransferSize | REG_DWORD | Cap on VSP adapter transfer | 8 MB |
| WorkerCount | REG_DWORD | IO worker threads | - |
| WorkerIoCountPerWorker | REG_DWORD | Per-worker IO queue depth | - |
| MonitoredNotificationLatencyIn100ns | REG_DWORD | VMBus monitored-notification latency hint (capped at 10 000) | 0 |
| VirtualProcessorsPerChannel | REG_DWORD | VPs per StorVSP channel | - |
| SpreadWork | REG_DWORD | Spread IO work across NUMA-local threads | 0 |
| AffinitizeThreads | REG_DWORD | Pin worker threads (meaningful only if SpreadWork=1) | 1 |
| NominalIoTimeout | REG_DWORD | SCSI nominal IO timeout (sec) | 10 |
| QoSBurstSizePercent | REG_DWORD | Storage QoS burst % | - |
FcVportRescanInterval (under <device>
subkey) |
REG_DWORD | FC vport rescan interval | - |
Parser-registration keys
(HKLM\SYSTEM\CurrentControlSet\Services\storvsp\Parameters\Parsers\{GUID},
read by storvsp.sys!ParserSystemLoadAndReferenceParserById
/ ParserSystemGetOverrideParserId):
OverrideParser (REG_SZ, force specific parser GUID),
ServiceName (REG_SZ, parser driver to load).
Parser map:
HKLM\SYSTEM\CurrentControlSet\Control\StorVSP\Parsers\{GUID}:
OverrideParser (REG_SZ), ServiceName
(REG_SZ).
storvsc —
HKLM\SYSTEM\CurrentControlSet\Services\storvsc\Parameters\Device:
MultiPhaseResumeEnabled (DWORD), StorChannel
(REG_BINARY container), ChannelCount (DWORD, 1-64),
ChannelMask (REG_BINARY CPU affinity mask). Also reads
HKLM\SYSTEM\CurrentControlSet\Control\CrashControl\MaximumTransferSize
for dump path.
vhdmp —
HKLM\SYSTEM\CurrentControlSet\Services\vhdmp\Parameters.
Values split across three init paths: reload-safe values
(VhdmpiUpdateDynamicGlobalPolicy) are marked
(reload-safe) below; boot-time static values
(VhdmpiInitializeGlobalPolicyData); CT-trace per-VHD values
(VhdmpiCTLogInitVirtualDiskForTracing). Reader helpers:
VhdmpiGetPolicyDWORD / VhdmpiGetPolicyBOOLEAN,
CmRegUtilUcValueGetFullBuffer.
| ValueName | Type | Default / Range | Purpose |
|---|---|---|---|
| InternalConcurrentMirrorThreadCount | REG_DWORD | 2 | LM mirror worker count (reload-safe) |
| MirrorBlockSize | REG_DWORD | 0x800000 (8 MB) | Mirror copy block size (reload-safe) |
| InternalConcurrentMirrorMaxReaders | REG_DWORD | 0 | Mirror reader concurrency cap (reload-safe) |
| InternalConcurrentMirrorMaxWriters | REG_DWORD | 0 | Mirror writer concurrency cap (reload-safe) |
| EnableSMBCompression | REG_DWORD | 0 | Allow SMB compression during mirror (reload-safe) |
| EnableLiveMigrationIrpTagging | REG_DWORD | 0 | Tag live-migration mirror IRPs (reload-safe) |
| EnableRefsSparseMigration | REG_DWORD | 1 | Preserve ReFS sparse regions on migrate (reload-safe) |
| PreserveAbcSparseMigration | REG_DWORD | 1 | Preserve ABC sparse on migrate (reload-safe) |
| EnableFileSystemAttributeOverrides | REG_DWORD | 1 | Allow VHD-supplied FS attr overrides (reload-safe) |
| EnableExpansionNotification | REG_DWORD | 0 | Send disk-expanded notifications (reload-safe) |
| AlwaysAllowSparseFiles | REG_DWORD | 0 | Allow sparse backing files always (reload-safe) |
| CacheNodeQuota | REG_DWORD | 256 | Max VHD cache nodes (reload-safe) |
| SurfaceTimeout | REG_DWORD | 300 | VHD attach/surface watchdog (sec) |
| SurfaceBusScanPeriod | REG_DWORD | 60 | VHD bus re-scan period (sec) |
| ForceDisableTpSupport | REG_DWORD | 0 | Disable UNMAP/TP to backing |
| ForceEnableMegaTrim | REG_DWORD | 0 | Enable large-span TRIM |
| SectorSize | REG_DWORD | 0 | Override exposed sector size |
| IgnoreCrcFailures | REG_DWORD | bool | Ignore CRC failures (diag) |
| Vhd1PhysicalSectorSize4KB | REG_DWORD | bool | Report VHD1 as 4K physical sector |
| MinimumInternalOffloadReadSize | REG_DWORD | def 64 KB | Min size for internal offload read |
| VhdxNoDiskAndBlockSizeLimit | REG_DWORD | bool | Bypass VHDX disk/block size cap |
| VhdxCacheFlushTimeoutMs | REG_DWORD | def 5000 | VHDX cache flush timeout |
| ForceDisableODX | REG_DWORD | bool | Force-disable ODX offload copy |
| ForceDisableTrim | REG_DWORD | bool | Force-disable UNMAP/TRIM |
| DisableReFSDuplicateExtents | REG_DWORD | bool | Disable ReFS duplicate-extent opt |
| DisableResiliency | REG_DWORD | bool | Disable resiliency |
| DisableVhdxMetadataResiliency | REG_DWORD | bool | Disable VHDX metadata resiliency |
| EnableSharedParentCaching | REG_DWORD | bool | Enable shared-parent cache |
| CachePagePriority | REG_DWORD | 0..7 (CM_PAGE_PRIORITY) | Default 5 (normal), max 7 (highest) |
| SmbResiliencyTimeoutMs | REG_DWORD | 1..300 000 ms | Out-of-range → reset to 60 000 |
| CsvResiliencyTimeoutMs | REG_DWORD | 1..300 000 ms | Out-of-range → reset to 180 000 |
| CTUnblockStageServerTimeoutMs | REG_DWORD | 200..300 000 ms | Out-of-range → reset to 700 |
| IoSubTrackerCount | REG_DWORD | power-of-2 ≥ 1, def 128 | IO sub-tracker count (non-power-of-2 values are invalid) |
| EnableAtomicWrites | REG_DWORD | bool | Enable atomic writes |
| RctMaximumDirtyCount | REG_DWORD | 64 | RCT max dirty |
| RctMaximumWrittenCount | REG_DWORD | 120 | RCT max written |
| RctMaximumFlushedCount | REG_DWORD | 64 | RCT max flushed |
| InternalConcurrentCopyThreadCount | REG_DWORD | 1-8, def 4 | Concurrent copy thread count |
| PrefetchDisable | REG_DWORD | bool | Disable VHDX prefetcher |
| CTTraceFlags | REG_DWORD | — | CT trace flags |
| CTTraceFilePath | REG_SZ | — | CT trace file path |
vhdparser —
HKLM\SYSTEM\CurrentControlSet\Services\vhdparser\Parameters:
EnableVhdopDriver (REG_DWORD bool).
pvhdparser —
HKLM\SYSTEM\CurrentControlSet\Services\pvhdparser\Parameters:
RdssdToAbcMigration, FastPause,
FastClose, IgnoreFlushes (all REG_DWORD bool).
Also reads
HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName.
vmstorfl —
HKLM\SYSTEM\CurrentControlSet\Services\vmstorfl WDF
Parameters: Enabled (REG_DWORD bool) — activate storage
filter.
vdrvroot —
HKLM\SYSTEM\CurrentControlSet\Services\vdrvroot\Parameters\FsDepends
(subkey presence registers FS dependency).
2.5. Virtual
Switch — vmswitch.sys (service key VmsMp)
Base:
HKLM\SYSTEM\CurrentControlSet\Services\VmsMp\Parameters.
Three init paths read this key:
VmsReadReloadableParameters— runtime-reloadable values (batch-copy sizes, DPC thresholds, header counts). Re-read when the driver receives a parameter-reload signal.VmsReadGlobalParameters— driver-entry only (safe-header size, fatal OID error mode, execution mode).VmsQsReadUserConfig— VRSS scheduler tunables (queue-scheduling mode, expansion/coalescing periods, CPU load thresholds).
Reader helpers: VmsCsAttrValueReadULong,
VmsCsAttrValueReadString.
| ValueName | Type | Purpose |
|---|---|---|
| VmsVmNicDisableMediaIndication | REG_DWORD | Disable NIC media-status indications |
| VmsVmNicSendLmNetworkChangeIndication | REG_DWORD | Emit LM network-change indications |
| VmsBroadcastUplinkDisconnect | REG_DWORD | Broadcast uplink disconnect to vNICs |
| VmsBroadcastNetworkChangeStatusIndication | REG_DWORD | Broadcast network-change status |
| VmsBroadcastLinkSpeedChangeIndication | REG_DWORD | Broadcast link-speed change |
| VmsMaxPacketHeaderCount | REG_DWORD (≤12) | Max headers per NBL — minimum 0xC enforced (VmsReadReloadableParameters) |
| VmsBypassExtStack | REG_DWORD (bool) | Bypass extension stack |
| VmsMinFragmentOffset | REG_DWORD | Min fragment offset |
| VmsDisableUDPvRss | REG_DWORD (bool) | Disable UDP vRSS |
| VmsMaxNumberOfQueuesPerVPort | REG_DWORD | Max VMQ queues per vPort |
| VmsMinNumberOfQueuesPerVPort | REG_DWORD | Min VMQ queues per vPort |
| VmsVmNicMaxSendBufferSizeInMB | REG_DWORD | vNIC max send-buffer MB |
| VmsVmNicMaxSendShadowSizeInMB | REG_DWORD | vNIC max send-shadow MB |
| VmsVmExternalMdlShadowMode | REG_DWORD | External MDL shadow mode |
| VmsVmMaxBatchesPerFlush | REG_DWORD | Max batches per flush |
| VmsVmMaxNBLsPerFlush | REG_DWORD | Max NBLs per flush |
| VmsVmBatchCopyOnStackBatchSize | REG_DWORD (1-64) | On-stack batch-copy size |
| VmsVmBatchCopyLookAsideBatchSize | REG_DWORD (1-2048) | Look-aside batch size |
| VmsVmBatchCopyRndisBatchSize | REG_DWORD (1-1024) | RNDIS batch size |
| VmsSingleInstanceDpcLowThreshold | REG_DWORD (≤100) | Single-instance DPC-low threshold |
| VmsCumulativeDpcLowThreshold | REG_DWORD (≤100) | Cumulative DPC-low threshold |
| VmsMaxVrssQueueAllocatedMBytes | REG_DWORD | Max VRSS queue allocation MB |
| VmsAllowVersionQuery | REG_DWORD (bool) | Allow version query OID |
| VmsDefaultPtNicDropLowResourcesPackets | REG_DWORD (bool) | PT NIC drop low-resources packets |
| VmsMaxNicResetTimeInSeconds | REG_DWORD (10-600) | Max NIC reset time |
| VmsEnableHwTimestampOverVmbus | REG_DWORD (bool) | HW timestamp over VMBus |
| VmsMaxCtlAuditEntries | REG_DWORD | Max control audit entries |
| VmsLogRateLimitMaxCount | REG_DWORD | Log rate-limit max count |
| VmsMaxOutstandingDuplicateNblMBytes | REG_DWORD | Max outstanding duplicate NBL MB |
| VmsFatalOidErrorMode | REG_DWORD | 0=ignore, 1=bugcheck, 2=log-only on fatal OID (VmsReadGlobalParameters; default 0) |
| VmsTokenRefundPeriodInMs | REG_DWORD | Token refund period ms |
| VmsLowLoadDurationInMs | REG_DWORD | Low-load duration ms |
| VmsCoalescingDurationInMs | REG_DWORD | Coalescing duration ms |
| VmsExpansionPeriodInMs | REG_DWORD | Queue expansion period ms |
| VmsNumberOfIndirectionTableEntries | REG_DWORD | RSS indirection table entries |
| VmsQueueSchedulingMode | REG_DWORD | VRSS scheduler: 0=static, 1=dynamic, 2=hybrid (VmsQsReadUserConfig; falls back to VmsVmqMode) |
| VmsExecutionMode | REG_DWORD | Bitmask: bit0=passive recv, bit3=passive send-complete (VmsReadGlobalParameters; default 0) |
| VmsSafeHeaderSize | REG_DWORD | Header-copy size, clamped to
0x100..VmsMaxSafeHeaderSize (default 256/384;
VmsReadGlobalParameters) |
| VmsIsHypercopyEnabled | REG_DWORD (bool) | Hypercopy enabled |
| VmsVmNicDropOversizedSends | REG_DWORD (bool) | Drop oversized sends |
| VmsRequiredExtensionNotPresentDrop | REG_DWORD (bool) | Drop if required extension absent |
| VmsPtNicSendMinStackThresholdInBytes | REG_DWORD | PT NIC send min-stack threshold |
| VmsIsRscOverVmBusEnabled | REG_DWORD (bool) | RSC over VMBus |
| VmsHostNicIndicateNblsInline | REG_DWORD (bool) | Host NIC inline NBL indication |
| VmsNetEventPausePtNicDrop | REG_DWORD (bool) | Net-event pause drop on PT NIC |
| VmsSwitchRssSendPacketCountMultiplier | REG_DWORD | Switch RSS send-count multiplier |
| VmsMaxNumMoveToken | REG_DWORD | Max move-token count |
| VmsCpuLoadLowerThreshold | REG_DWORD | CPU load lower threshold |
| VmsCpuLoadUpperThreshold | REG_DWORD | CPU load upper threshold |
| VmsSendInterruptMode | REG_DWORD | Send interrupt mode |
| VmsDiagnosticFlags | REG_DWORD | Diagnostic flags |
HKLM\SYSTEM\CurrentControlSet\Services\VmsMp\Parameters\Switches\<id>\Properties
— per-switch extension properties (no fixed value schema).
HKLM\SYSTEM\CurrentControlSet\Services\VmsMp\Parameters\Nics\<id>
— per-NIC persistent state:
| ValueName | Type |
|---|---|
| NicType | REG_DWORD (1 = external, 2 = vNIC) |
| SwitchName | REG_SZ |
| PortName | REG_SZ |
| FriendlyName | REG_SZ |
| OriginalName | REG_SZ |
| MiniportDeviceGuid | REG_SZ |
| NicCurrentMacAddress | REG_BINARY (6 bytes) |
| NicPermanentMacAddress | REG_BINARY (6 bytes) |
| IsLightWeightNic | REG_DWORD |
| IsLightWeightNicEnable | REG_DWORD |
Per-NIC device SW key (via IoOpenDeviceRegistryKey):
VlanID (0-4095).
Also reads
HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName.
2.6. vPCI / DDA —
pcip.sys
Per-device SW key (opened via WDF
WdfDeviceOpenRegistryKey, read in
InitializeMitigationMaps with
WdfRegistryQueryULong). PCIPHackFlags is the
only actual Reg* read — the other three values are consumed
via PnP/WDF property facilities, not direct registry calls.
| ValueName | Type | Purpose | Default |
|---|---|---|---|
| PCIPHackFlags | REG_DWORD | DWORD bitmask to disable / alter individual config-space mitigations for a DDA function | 0 |
| SupportedDevice | REG_DWORD | Mark device supported for vPCI passthrough | 0 |
| HotRemoveSafe | REG_DWORD | Declared hot-remove-safe | 0 |
| DisablePowerManagement | REG_DWORD | Disable PM on passthru device | 0 |
2.7. Video —
HyperVideo.sys
Base key:
HKLM\SYSTEM\CurrentControlSet\Services\Video\Virtualization.
All values read in a single function — HvdDdiAddDevice —
using RtlQueryRegistryValuesEx with a
RtlQueryRegistryValues fallback.
| ValueName | Type | Purpose | Default |
|---|---|---|---|
| MonitorCount | REG_DWORD | Mode count (1=single, 2=dual, 3=auxiliary) — controls which of the other values are consulted | 1 |
| HorizontalSizeInCm | REG_DWORD | Physical horizontal monitor size | 0 |
| VerticalSizeInCm | REG_DWORD | Physical vertical monitor size | 0 |
| InternalDisplay | REG_DWORD (bool) | Mark display as internal (affects brightness/DDC) | 0 |
| VirtualModeSupport | REG_DWORD | Expose EDID-less virtual modes (gated by MonitorCount==1) | 1 when MonitorCount≥2 |
| HorizontalResolution | REG_DWORD (≥100, even) | Primary horizontal pixel resolution | 1024 |
| VerticalResolution | REG_DWORD | Primary vertical pixel resolution | 768 |
| MaskWidth | REG_DWORD | Mask/bezel width between dual displays (MonitorCount≥2) | - |
| HorizontalResolutionAuxiliary | REG_DWORD (≥100) | Aux display horizontal resolution (MonitorCount==3) | 1024 |
| VerticalResolutionAuxiliary | REG_DWORD | Aux display vertical resolution | - |
2.8. Keyboard —
hyperkbd.sys
Reads
HKLM\SYSTEM\CurrentControlSet\Services\hyperkbd\Parameters\crashdump
subkey (KbdConnectData etc.) and
HKLM\SYSTEM\CurrentControlSet\Services\kbdclass\Parameters
as companion (used during crash-dump path). Driver itself has no
RtlQueryRegistryValues / ZwQueryValueKey calls
— config comes from the driver INF and WDF defaults.
2.9. Windows Container
FS filter — wcifs.sys
Base key:
HKLM\SYSTEM\CurrentControlSet\Services\wcifs\Parameters
(opened via IoOpenDriverRegistryKey in
WcSetConfiguration), plus a boot-config subkey under
HKLM\SYSTEM\CurrentControlSet\Control resolved in
WcSetBootConfiguration at driver entry.
| ValueName | Type | Function | Purpose | Default |
|---|---|---|---|---|
| DebugOptions | REG_DWORD (bitmask) | wcifs:WcSetConfiguration | Per-bit diagnostic toggles (IRP trace, reparse/tombstone/placeholder/layering debug) | 0 |
| BootContainer | REG_SZ / REG_BINARY | wcifs:WcSetBootConfiguration | Identifies the boot container the system came up in | not-present (host) |
| BootContainerGuid | REG_SZ (GUID) | wcifs:WcSetBootConfiguration | GUID of boot container; selects the per-GUID sub-hive | not-present |
| Hvsi | REG_DWORD / REG_SZ | wcifs:WcSetBootConfiguration | Flag: container is an HVSI (Hyper-V Isolated) container; changes isolation path | 0 |
| WCIFSContainerMode | REG_DWORD | wcifs:WcSetBootConfiguration | Container layering mode (silo / nested / boot) | 0 |
| InstanceName | REG_SZ | wcifs:WcSetBootConfiguration | Filter-manager instance name when mounting boot container | - |
| ReparseTag | REG_DWORD | wcifs:WcSetBootConfiguration | Reparse-point tag honored by the filter
(IO_REPARSE_TAG_WCI_1, …_WCI_TOMBSTONE) |
0x8000001B |
2.10. Drivers WITHOUT driver-specific registry config
These Hyper-V kernel drivers have no
RtlQueryRegistryValues / ZwQueryValueKey /
IoOpenDeviceRegistryKey calls against their own service key
— all behavior is driven by the VMBus channel state or IOCTLs from
vmms.exe:
dmvsc.sys, vmgencounter.sys,
vmgid.sys, vmsvcext.sys,
lunparser.sys, NdisVirtualBus.sys,
VmsProxy.sys, VmsProxyHNic.sys,
hvsocketcontrol.sys, passthruparser.sys,
vpcivsp.sys (DDA VSP backend),
VMBusHID.sys.
ramparser.sys and vmbusproxy.sys link a
shared PnP helper that reads generic device-creation settings
(Security, DeviceType,
DeviceCharacteristics, Exclusive) from
HKLM\SYSTEM\CurrentControlSet\Control\Class\{ClassGUID}\Properties
— these are not driver-specific tunables, just the standard PnP stack
defaults.
2.11. Hypervisor boot parameters
Hyper-V hypervisor is launched by hvloader.dll during
Windows boot. Its configuration comes from two layers merged at
launch:
- BCD options under the
{hypervisorsettings}object — set viabcdedit /set {hypervisorsettings} NAME value. - Registry fallback under
HKLM\SYSTEM\CurrentControlSet\Control\Hypervisor— key opened byhvloader!HvlLoadHypervisorviaOslGetControlSubkey. When a BCD option is absent,hvloadertries the registry value with the same name (OslGetValueAtKey,OslGetStringValueAtKey).
hvix64.exe / hvax64.exe (the actual
hypervisor images) do not read BCD or registry themselves — they receive
the resolved configuration as a data structure passed by
hvloader.
2.11.1.
HKLM\SYSTEM\CurrentControlSet\Control\Hypervisor
values
All values here are read by hvloader.dll (boot-time).
Entries marked (bcdedit) are also settable via BCD on the
{hypervisorsettings} object — the registry value serves as
fallback if the BCD element is not set.
| ValueName | Type | Possible values | Default (absent) | Purpose |
|---|---|---|---|---|
| IgnoreMemPart | REG_DWORD | 0, non-zero | 0 | Skip memory-partition metadata init (bypasses NUMA/memory-reserve
partitioning); consulted both by hvloader and by
vid.sys as a global override |
| HypervisorUseVapic | REG_DWORD (bcdedit) | 0 = disabled, non-zero = enabled | 0 | Enable hardware virtual APIC (X2APIC/AVIC when available); sets low
bit of flags word; BCD fallback for boolean element
0x260000D6 |
| DmaGuardOptIn | REG_DWORD | 0, 1 | 0 | Opt-in flag for DMA-Guard IOMMU protection during boot; affects early DMA mapping policy |
| EnableHardwareIsolation | REG_DWORD | 0 = default, 1 = enable, 2 = force | 0 | Enable hardware-isolation CPU features (Intel TDX / AMD SEV-SNP
container mode); 1 → normal, 2 → required |
| EnableSevSnp | REG_DWORD | 0 = disabled, non-zero = enabled | 0 | Enable AMD SEV-SNP isolation (checked only on AMD
"AuthenticAMD" CPUID — ignored otherwise) |
| EnableIov | REG_DWORD | 0 = disabled, non-zero = enabled | 0 | Enable IOV (IOMMU virtualization) for device assignment at boot |
| InitialAllocationNumaPolicy | REG_DWORD | 1 = distributed, 2 = packed | 2 | Initial NUMA allocation policy for host memory; also controlled via
the NUMADISTRIBUTED token in
Hypervisorloadoptions |
| hypervisorperfmon | REG_SZ (bcdedit) | "system", "hypervisor" |
— | Owner of performance-monitoring hardware: "system" = OS
kernel owns PMU (bit 0x80000), "hypervisor" =
HV owns PMU (bit 0x100000); also settable as BCD integer
0 / 1 |
| Hypervisorloadoptions | REG_SZ (bcdedit) | free-form token string | — | Additional boot tokens parsed via strstr. Known tokens:
" ENABLEHARDWAREISOLATION ",
" NUMADISTRIBUTED " |
Subkey MetadataMemoryPartition — read
if IgnoreMemPart is zero:
| ValueName | Type | Purpose |
|---|---|---|
| Name | REG_SZ | Name/identifier of the metadata memory partition used for HV deposits |
2.11.2.
HKLM\SYSTEM\CurrentControlSet\Services\winhvr\Parameters
One DWORD, consulted only when the active hypervisor scheduler is the Root scheduler (scheduler type = 4); ignored otherwise.
| ValueName | Type | Possible values | Default | Purpose |
|---|---|---|---|---|
| DisableDynamicFairShareScheduler | REG_DWORD | 0 = DFSS enabled, non-zero = disabled | 0 (DFSS on) | Read in winhvr!WinHvpInitializeXSchedulerSupport: when
set non-zero and root scheduler active, turns off Dynamic Fair Share
Scheduler for root partition VPs (flag
WinHvpDfssEnabled) |
2.11.3.
Relevant BCD options
(bcdedit /set {hypervisorsettings} …)
The HvlLoadHypervisor function reads 13+ BCD elements on
the boot OS-loader object. The canonical options, as publicly documented
by Microsoft, are below (hvloader performs integer/boolean
lookups on the OS-loader object via BlGetBootOptionInteger
/ BlGetBootOptionBoolean using numeric element IDs in the
hypervisor integer range 0x25000018..0x25000055 and boolean
range 0x26000011..0x260000D6):
| bcdedit name | Type | Possible values | Purpose |
|---|---|---|---|
| hypervisorlaunchtype | enum | Off, Auto |
Master on/off for Hyper-V at boot |
| hypervisordebug | bool | Yes/No |
Enable hypervisor kernel debugger |
| hypervisordebugtype | enum | Serial, 1394, Net |
Debug transport |
| hypervisorbaudrate | int | serial baud (e.g. 115200) | Debug serial baud rate |
| hypervisorchannel | int | 0-62 | 1394/NET channel |
| hypervisorserialdebugport | int | COM port number | Debug serial port (COM1=1, COM2=2, …) |
| hypervisorbusparams | string | b.d.f (bus.dev.func) |
PCI bus/device/function of debug NIC |
| hypervisorhostip | int (IP4) | IPv4 as 32-bit int | Net-debug host IP |
| hypervisorhostport | int | TCP port | Net-debug host port |
| hypervisornumproc | int | 1..N | Limit number of LPs the hypervisor uses |
| hypervisorrootproc | int | 1..N | Number of root-partition VPs (dedicated-scheduler mode) |
| hypervisorrootprocpercore | int | SMT units | Root VPs per physical core |
| hypervisoriommupolicy | enum | Default, Enable, Disable |
IOMMU usage policy |
| hypervisorloadoptions | string | token list | Free-form tokens (mirrored in Hypervisorloadoptions
registry value) |
| hypervisorscheduler | enum | Classic=1, Core=2, Root=3
(also 4=legacy root, seen in
winhvr) |
Hypervisor scheduler type |
| hypervisorusevapic | bool | Yes/No |
Use virtual APIC (mirrors HypervisorUseVapic reg
value) |
| hypervisorperfmon | enum | System, Hypervisor |
Owner of PMU hardware (mirrors reg value) |
| hypervisordisableslat | bool | Yes/No |
Disable SLAT (EPT/NPT) — forces shadow paging, debug-only |
| hypervisoruselargevtlb | bool | Yes/No |
Use large virtual-TLB |
| hypervisorenforcedcodeintegrity | bool | Yes/No |
Enforce HV-level code integrity |
| hypervisordisabledfss | bool | Yes/No |
BCD counterpart of the DisableDynamicFairShareScheduler
reg value |
Values for hypervisorscheduler are reported back to the
root partition via
WinHvGetSystemInformation(SystemHypervisorInformation) as a
uint32. The root scheduler is selected via value
4.
3. Group Policy / MDM Policies
3.1.
HKLM\SOFTWARE\Policies\Microsoft\Windows\HyperV
Read by vmms.exe via
Vml::VmRegistryKey::Open. The only Hyper-V-specific policy
key (everything else under Policies\Microsoft\Windows\* is
consumed by ntoskrnl / rpcrt4 / vmcompute, not Hyper-V role itself).
| ValueName | Type | Purpose |
|---|---|---|
| RequireSecureDeviceAssignment | REG_DWORD | Block DDA of devices that are not DMA-remap-secure. Error:
"Device is not compliant with HyperV\RequireSecureDeviceAssignment group policy." |
| RequireSupportedDeviceAssignment | REG_DWORD | Block DDA of devices not on the supported/allow-list. Error:
"Device is not compliant with HyperV\RequireSupportedDeviceAssignment group policy." |
3.2.
HKLM\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation
Read by both vmms.exe and
Microsoft.Virtualization.Client.dll. vmms also
writes here (CredSSP SPN allow-lists under subkeys
1..N).
- Client reads
RestrictedRemoteAdministration(REG_DWORD). vmms.SmbPolicyManageradds the VM-host SPN toAllowFreshCredentialsandAllowFreshCredentialsWhenNTLMOnlyfor CredSSP live-migration.
3.3. Not present
- No
HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdatereferences in Hyper-V binaries (hits belong to ntoskrnl / rpcrt4). - No
HKLM\SOFTWARE\Microsoft\PolicyManager(MDM bridge) references. Hyper-V is classic-GPO-only.
4. WMI Schema (root\virtualization\v2)
Sources: WindowsVirtualization.V2.mof (4405 lines),
WindowsHyperVCluster.V2.mof (2230 lines,
root\HyperVCluster\v2), HgsClientWmi.mof (HGS
client). Provider: VmmsWmiInstanceAndMethodProvider
(in-process inside vmms.exe).
Association classes (e.g. Msvm_HostedService,
Msvm_ElementSettingData) intentionally omitted — they just
link instances and carry no config surface.
4.1. Core VM / Compute System
Msvm_ComputerSystem (extends CIM_ComputerSystem) — a live or stored VM.
OnTimeInMilliseconds(uint64) — uptime since startProcessID(uint32) — worker (vmwp) PIDTimeOfLastConfigurationChange(datetime)NumberOfNumaNodes(uint16)ReplicationState / ReplicationHealth / ReplicationMode(uint16, ValueMaps)LastSuccessfulBackupTime(datetime)EnhancedSessionModeState(uint16, {2,3,6})HwThreadsPerCoreRealized(uint32)ManagementVtlImageVersion / ManagementVtlImageFileName(string)- Methods:
RequestStateChange,RequestReplicationStateChange,InjectNonMaskableInterrupt,InjectNonMaskableInterruptEx(Vtl),RequestCustomRestore
Msvm_PlannedComputerSystem — staging VM during import/migration.
AssignedNumaNodeList[](uint16, Indexed),OnTimeInMilliseconds(uint64)
Msvm_VirtualSystemSettingData — editable VM settings blob.
- Identity:
BIOSGUID,BIOSSerialNumber,BaseBoardSerialNumber,ChassisSerialNumber,ChassisAssetTag,VirtualSystemIdentifier - Arch/gen:
Architecture {"x64","arm64"},VirtualSystemSubType {Microsoft:Hyper-V:SubType:1|2},Version - Boot:
BootOrder[](MAX 4),BootSourceOrder[],BootPciExpress + BootPciExpressInstanceFilter,NetworkBootPreferredProtocol {IPv4,IPv6},SecureBootEnabled + SecureBootTemplateId,PauseAfterBootFailure,BIOSNumLock - Memory/MMIO:
LowMmioGapSize,HighMmioGapSize,HighMmioGapBase,EnableHibernation - Debug:
DebugChannelId,DebugPort,DebugPortEnabled {Off|On|OnAutoAssigned} - Snapshots/state:
UserSnapshotType {2,3,4,5},IsAutomaticSnapshot,AutomaticSnapshotsEnabled,IsSaved,IncrementalBackupEnabled,GuestStateDataRoot,GuestStateFile,SourceGuestStateFile - NUMA/SLIT:
VirtualNumaEnabled,NumaNodeTopologyArray[],VirtualSlitType {None|Firmware|Measured|FirmwareFallbackMeasured} - VTL2:
Vtl2AddressRangeBase,Vtl2AddressRangeSize,Vtl2MmioAddressRangeSize,Vtl2AddressSpaceConfigurationMode {Default|ConfigurableSizePlacement|ExplicitPlacement} - Isolation:
GuestStateIsolationEnabled,GuestStateIsolationType {0,1,2,3,16,18,19},GuestStateIsolationMode {0,1,2} - Misc:
AdditionalRecoveryInformation,AllowFullSCSICommandSet,TurnOffOnGuestRestart,ConsoleMode {Default|COM1|COM2|None},EnhancedSessionTransportType {0,1},AutomaticCriticalErrorAction {None|"Pause Resume"},AutomaticCriticalErrorActionTimeout(interval),LockOnDisconnect,GuestControlledCacheTypes,ClusterWideNodeCapabilitiesValidationMode {Default|Override},VMBusMessageRedirection {0,1},WorkerJobObjectName,MemoryHostingJobObjectName,FirmwareFile + FirmwareParameters[],WatchdogEnabled,GuestFeatureSet(uint64),ManagementVtlUpdatePolicy,AllowReducedFcRedundancy
Msvm_SummaryInformation / Msvm_SummaryInformationBase — UI-listing view (Name, State, CPU%, Memory, Uptime).
4.2. Processor & Memory
Msvm_Processor (CIM_Processor) — virtual CPU.
Msvm_ProcessorSettingData (CIM_ResourceAllocationSettingData):
- Topology:
HwThreadsPerCore,MaxProcessorsPerNumaNode,MaxNumaNodesPerSocket,MaxProcessorCountPerL3,MaxClusterCountPerSocket,EnableSocketTopology - Features/compat:
LimitCPUID,LimitProcessorFeatures,LimitProcessorFeaturesMode {DefaultMinimumFeatures|ClusterNodeCommonFeatures},ProcessorFeatureSet,CpuBrandString,EnlightenmentSet - Host protection/nested:
EnableHostResourceProtection,ExposeVirtualizationExtensions,ExtendedVirtualizationExtensions {HardwareIsolation},MaxHwIsolatedGuests - Hierarchical:
EnableHierarchicalVirtualization,MaxHierarchicalPartitions,MaxHierarchicalVps - Perfmon:
EnablePerfmonPmu,EnablePerfmonArchPmu,EnablePerfmonLbr,EnablePerfmonPebs,EnablePerfmonIpt - Diagnostic buffers:
PartitionDiagnosticBufferCount,PartitionDiagnosticBufferSizeInPages - APIC / paging:
ApicMode {0..3},EnableLegacyApicMode,EnablePageShattering {0,1,2},AllowACountMCount,HideHypervisorPresent,DisableSpeculationControls - CPU groups / caps:
CpuGroupId,PerfCpuFreqCapMhz,L3CacheWays,L3ProcessorDistributionPolicy {SmallToLarge|LargeToSmall|EvenSmallToLarge|EvenLargeToSmall},PhysicalAddressWidth
Msvm_ProcessorPool (CIM_ResourcePool) — method
CalculatePossibleReserve(ProcessorCount).
Msvm_NumaNode, Msvm_NumaNodeTopology, Msvm_ElementAllocatedFromNumaNode.
Msvm_Memory (CIM_Memory) — VM memory device.
Msvm_MemorySettingData (CIM_ResourceAllocationSettingData):
DynamicMemoryEnabled,TargetMemoryBufferIsVirtualized,SwapFilesInUseMaxMemoryBlocksPerNumaNode- SGX:
SgxEnabled,SgxSize,SgxLaunchControlMode {0,1,2},SgxLaunchControlDefault - Pages:
HugePagesEnabled,BackingType {0,1,2},BackingPageSize {0,1,2},EnableHotHint,EnableColdHint,EnableEpf,EnablePrivateCompressionStore - Crypto/tracking:
MemoryEncryptionPolicy {0,1,2},MemoryAccessTrackingPolicy,MemoryAccessTrackingState
4.3. Storage
Msvm_VirtualHardDiskSettingData — VHD/VHDX template.
Type {2,3,4}(Fixed/Dynamic/Differencing)Format {2,3,4}(Unknown/VHD/VHDX)Path,ParentPath,ParentIdentifier,ParentTimestampMaxInternalSize,BlockSize,LogicalSectorSize,PhysicalSectorSizeVirtualDiskIdIsPmemCompatible,PmemAddressAbstractionType,DataAlignment
Msvm_VirtualHardDiskState — read-only:
FileSize, InUse, MinInternalSize,
PhysicalSectorSize, Alignment,
FragmentationPercentage, Timestamp.
Msvm_VHDSetInformation (.vhds AVHDX
sets) — Path, SnapshotIdList[],
AllPaths[].
Msvm_VHDSnapshotInformation — FilePath,
SnapshotId, SnapshotPath,
ParentPathsList[], CreationTime,
ResilientChangeTrackingId.
Msvm_ImageManagementService — methods:
CreateVirtualHardDisk,
GetVirtualHardDiskSettingData,
GetVirtualHardDiskState,
ResizeVirtualHardDisk, MergeVirtualHardDisk,
OptimizeVirtualHardDisk,
AttachVirtualHardDisk,
GetVHDSnapshotInformation.
Msvm_StorageJob (CIM_ConcreteJob), Msvm_MountedStorageImage, Msvm_DiskDrive, Msvm_DVDDrive, Msvm_DisketteDrive, Msvm_LogicalDisk, Msvm_StorageAllocationSettingData, Msvm_SCSIProtocolController, Msvm_IDEController, Msvm_DisketteController, Msvm_PersistentMemoryController, Msvm_StorageSettingData, Msvm_VirtualLogicalUnitSettingData.
4.4. Networking — vSwitch / vNIC
Msvm_VirtualEthernetSwitch — vSwitch instance.
MaxVMQOffloads (uint32), MaxIOVOffloads
(uint32, read-only).
Msvm_VirtualEthernetSwitchSettingData —
IOVPreferred=FALSE, ExtensionOrder[],
BandwidthReservationMode {0..3},
PacketDirectEnabled, TeamingEnabled,
AllowNetLbfoTeams, BypassExtensionStack,
RequiredExtensionIds[].
Msvm_VirtualEthernetSwitchManagementService —
methods: DefineSystem, DestroySystem,
ModifySystemSettings, AddResourceSettings,
ModifyResourceSettings,
RemoveResourceSettings, AddFeatureSettings,
ModifyFeatureSettings,
RemoveFeatureSettings.
Msvm_VirtualEthernetSwitchManagementCapabilities —
IOVSupport, IOVSupportReasons[],
AsynchronousMethodsSupported[].
Msvm_EthernetSwitchPort —
VMQOffloadUsage, IOVOffloadUsage.
Msvm_EthernetPortAllocationSettingData — vNIC
binding: EnabledState, LastKnownSwitchName,
RequiredFeatures[], TestReplicaPoolID,
TestReplicaSwitchName, CompartmentGuid,
PortName.
Msvm_ExternalEthernetPort / InternalEthernetPort / EmulatedEthernetPort / SyntheticEthernetPort — port flavors.
Msvm_SyntheticEthernetPortSettingData, Msvm_EmulatedEthernetPortSettingData — NIC RASDs.
Per-port feature settings (VFP extensions):
| Class | Key properties |
|---|---|
| Msvm_EthernetSwitchPortAclSettingData | Name, Direction, Applicability, AclType, Action, LocalAddress, RemoteAddress, PrefixLength |
| Msvm_EthernetSwitchPortExtendedAclSettingData | Name, Direction, Action, LocalIP/RemoteIP/LocalPort/RemotePort/Protocol (default "ANY"), Weight, Stateful, IdleSessionTimeout=255, IsolationID |
| Msvm_EthernetSwitchPortSecuritySettingData | AllowMacSpoofing, EnableDhcpGuard, EnableRouterGuard, MonitorMode, MonitorSession, AllowIeeePriorityTag, VirtualSubnetId (max 16777215), AllowTeaming, TeamName, TeamNumber, StormLimit, DynamicIPAddressLimit, EnableFixSpeed10G |
| Msvm_EthernetSwitchPortOffloadSettingData | IPSecOffloadLimit=512, VMQOffloadWeight=100, IOVOffloadWeight, IOVQueuePairsRequested=1, IOVInterruptModeration {Default |
| Msvm_EthernetSwitchPortRdmaSettingData | RdmaOffloadWeight |
| Msvm_EthernetSwitchPortTeamMappingSettingData | NetAdapterName, NetAdapterDeviceId, DisableOnFailover |
| Msvm_EthernetSwitchPortVlanSettingData | OperationMode {1,2,3}, AccessVlanId, NativeVlanId, PvlanMode {1,2,3}, PrimaryVlanId, SecondaryVlanId, PruneVlanIdArray[], TrunkVlanIdArray[], SecondaryVlanIdArray[] |
| Msvm_EthernetSwitchPortIsolationSettingData | isolation config |
| Msvm_EthernetSwitchPortBandwidthSettingData | bandwidth |
| Msvm_EthernetSwitchPortRoutingDomainSettingData | NV-GRE routing |
| Msvm_EthernetSwitchPortProfileSettingData | port profile |
Switch-level features: Msvm_VirtualEthernetSwitchBandwidthSettingData, Msvm_VirtualEthernetSwitchNicTeamingSettingData, Msvm_EthernetSwitchHardwareOffloadSettingData.
Extensions: Msvm_EthernetSwitchExtension, Msvm_InstalledEthernetSwitchExtension.
Live metrics: Msvm_EthernetSwitchPortOffloadData, Msvm_EthernetSwitchPortBandwidthData.
Fibre Channel: Msvm_VirtualFcSwitch / Msvm_VirtualFcSwitchSettingData, Msvm_ExternalFcPort / SyntheticFcPort / FcSwitchPort, Msvm_FcPortAllocationSettingData, Msvm_SyntheticFcPortSettingData.
4.5. Security / Shielding / TPM
Msvm_SecuritySettingData (all Required, Read):
TpmEnabled, KsdEnabled,
ShieldingRequested, DataProtectionRequested,
EncryptStateAndVmMigrationTraffic,
VirtualizationBasedSecurityOptOut,
BindToHostTpm, AppContainerLaunchOptOut.
Msvm_SecurityElement — runtime:
Shielded,
EncryptStateAndVmMigrationTrafficEnabled.
Msvm_SecurityService — methods:
ModifySecuritySettings, SetSecurityPolicy,
SetKeyProtector, GetKeyProtector,
RestoreLastKnownGoodKeyProtector.
Msvm_TPM — virtual TPM device.
MSFT_HgsClientConfiguration (HGS client, MSFT_
prefix): Mode {0,1,2}, IsHostGuarded,
KeyProtectionServerUrl, AttestationServerUrl,
AttestationOperationMode, AttestationStatus,
AttestationSubstatus,
FallbackKeyProtectionServerUrl[],
FallbackAttestationServerUrl[],
LastKeyProtectionServerUrl,
LastAttestationServerUrl. Methods: Get,
IsHostTrusted, SetByChangeToLocalMode,
SetBySecureHostingServiceMode.
MSFT_HgsGuardian — Name,
SigningCertificate[], EncryptionCertificate[],
EncryptionCertificateSignature,
EncryptionCertificateSignatureAlgorithm,
HasPrivateSigningKey, GuardianMetadataVersion.
Methods: NewByAcceptCertificates,
NewByCertificateThumbprints,
NewByGenerateCertificates, Import,
Export, Remove.
MSFT_HgsKeyProtector — Owner,
Guardians[], RawData[]. Methods:
NewByGuardians, Grant, Revoke,
ConvertToByRawBytes.
MSFT_HgsKeyProtectorOperations —
UnwrapKeyProtector, CreateKeyProtector,
EncryptDataWithKeyProtector,
DecryptDataWithKeyProtector.
4.6. Devices — DDA / GPU / Flex-IO
Msvm_AssignableDeviceService, Msvm_AssignableDeviceDismountSettingData, Msvm_PciExpress, Msvm_PciExpressSettingData.
Msvm_GpuPartition — DeviceInstancePath,
PartitionId, PartitionVfLuid,
CurrentCompute / Decode / Encode / VRAM,
SupportsOutgoingLiveMigration.
Msvm_PartitionableGpu — host GPU:
ValidPartitionCounts[], PartitionCount,
TotalVRAM, AvailableVRAM,
SupportsIncomingLiveMigration,
Min/Max/OptimalPartitionVRAM, …Encode,
…Decode, …Compute.
Msvm_GpuPartitionSettingData — per-VM:
Min/Max/OptimalPartitionVRAM, …Encode,
…Decode, …Compute,
VirtualSystemIdentifiers[],
NumaAwarePlacement.
Msvm_FlexIoDevice, Msvm_FlexIoDeviceSettingData — generic PCIe flex-IO.
Msvm_SyntheticDisplayController, Msvm_SyntheticDisplayControllerSettingData, Msvm_S3DisplayController, Msvm_Synthetic3DDisplayController, Msvm_Synthetic3DService, Msvm_Synth3dVideoPool, Msvm_PhysicalGPUInfo, Msvm_Physical3dGraphicsProcessor — video/RemoteFX.
Msvm_Keyboard / Ps2Mouse / SyntheticKeyboard / SyntheticMouse.
Msvm_SerialController, Msvm_SerialPort, Msvm_SerialPortSettingData.
Msvm_Battery, Msvm_BatterySettingData.
Msvm_TerminalService, Msvm_TerminalServiceSettingData, Msvm_TerminalConnection, Msvm_InteractiveSessionACE — VMConnect plumbing.
4.7. Integration Services (Guest components)
Each IC is a pair (component + SettingData):
- HeartbeatComponent + SettingData
- KvpExchangeComponent + SettingData, plus
Msvm_KvpExchangeDataItem(Name/Data/Source) for host↔︎guest KVP - ShutdownComponent + SettingData
- TimeSyncComponent + SettingData
- VssComponent + SettingData, plus Msvm_VssService
- RdvComponent + SettingData (RDP / Enhanced Session)
- GuestServiceInterfaceComponent + SettingData
- Msvm_GuestService, Msvm_GuestCommunicationService, Msvm_GuestFileService (Copy-VMFile), Msvm_CopyFileToGuestSettingData, Msvm_CopyFileToGuestJob
- Msvm_GuestClusterInformation — embedded guest cluster state
- Msvm_GuestNetworkAdapterConfiguration — IP/DNS/VLAN info for in-guest NIC
4.8. Migration / Replication / Snapshots
- Msvm_VirtualSystemMigrationService — live
migration. Methods:
MigrateVirtualSystemToHost,MigrateVirtualSystemToHostEx,CheckCapabilities - Msvm_VirtualSystemMigrationServiceSettingData — host config (enabled, auth type Kerberos/CredSSP, max simultaneous)
- Msvm_VirtualSystemMigrationSettingData — per-migration (destination, transfer type, network list)
- Msvm_VirtualSystemMigrationNetworkSettingData — SubnetNumber, PrefixLength, Metric, Tags
- Msvm_VirtualSystemMigrationCapabilities, Msvm_MigrationJob, Msvm_MoveUnmanagedVhd
- Msvm_ReplicationService, Msvm_ReplicationRelationship, Msvm_ReplicationSettingData, Msvm_ReplicationServiceSettingData, Msvm_ReplicationAuthorizationSettingData, Msvm_ReplicationStatistics, Msvm_ReplicationProvider
- Msvm_FailoverNetworkAdapterSettingData — IP injection on failover
- Msvm_VirtualSystemSnapshotService, Msvm_VirtualSystemSnapshotSettingData, Msvm_VirtualSystemReferencePointService, Msvm_VirtualSystemReferencePoint, Msvm_VirtualSystemReferencePointSettingData, Msvm_DiskMergeSettingData
4.9. Collections (VM Groups)
- Msvm_CollectionManagementService, Msvm_VirtualSystemCollection, Msvm_ManagementCollection, Msvm_CollectionSettingData
- Msvm_CollectionSnapshotService, Msvm_SnapshotCollection, Msvm_CollectionSnapshotExportSettingData
- Msvm_CollectionReferencePointService, Msvm_ReferencePointCollection, Msvm_CollectionReferencePointSettingData, Msvm_CollectionReferencePointExportSettingData, Msvm_CollectionReferencePointExportJob
- Cluster-only: Msvm_CollectionReplicationService, Msvm_CollectionReplicationSettingData, Msvm_CollectionReplicationStatistics, Msvm_CollectionRecoveryPoint, Msvm_SharedDiskSetReplicationRelationship
4.10. Management / Host Service
Msvm_VirtualSystemManagementService — main VMMS
faƧade. Methods: DefineSystem, DestroySystem,
ModifySystemSettings, AddResourceSettings,
ModifyResourceSettings,
RemoveResourceSettings,
ExportSystemDefinition,
ImportSystemDefinition, ValidatePlannedSystem,
RealizePlannedSystem, UpdateVirtualMachine,
ConvertVirtualHardDisk, CopyFileToGuest,
SetDebugPort, InstantiateVirtualSystem.
Msvm_VirtualSystemManagementServiceSettingData —
host defaults: DefaultExternalDataRoot,
DefaultVirtualHardDiskPath,
MaximumStorageMigrations,
AuthorizationManager, NumaSpanningEnabled.
Msvm_VirtualSystemManagementCapabilities, Msvm_VirtualSystemCapabilities.
Msvm_MetricService, Msvm_BaseMetricDefinition, Msvm_BaseMetricValue, Msvm_AggregationMetricDefinition, Msvm_AggregationMetricValue, Msvm_MetricServiceSettingData — resource metering.
Msvm_ConcreteJob — generic async job:
PercentComplete, JobStatus,
ErrorCode, ErrorSummaryDescription,
ErrorDescription.
Msvm_VirtualSystemExportSettingData, Msvm_SystemExportSettingData, Msvm_VirtualSystemUpgradeSettingData.
Msvm_CompatibilityVector — versioning vector for import.
Msvm_BootSourceSettingData, Msvm_BootSourceComponent — Gen2 boot entries.
Msvm_BIOSElement, Msvm_SystemBIOS — Gen1 BIOS.
4.11. Cluster-specific (root\HyperVCluster\v2)
- Msvm_ClusterV2ElementConformsToProfile
- Duplicates of core classes (ComputerSystem / ConcreteJob / VSSettingData) in cluster scope
- Msvm_FailoverIndication (CIM_ProcessIndication) — failover event
- Msvm_CollectionReplicationService / SettingData — group replication
- Msvm_SharedDiskSetReplicationRelationship — shared-VHDX replication
- Msvm_CollectionRecoveryPoint, Msvm_RecoveryPointOfVirtualSystemCollection
5. Client-Side Settings (UI preferences)
Source:
Microsoft.Virtualization.Client.Settings.dll.
The only user-scoped settings class is
Microsoft.Virtualization.Client.Settings.SettingsConfigurationOptions
(extends .NET ApplicationSettingsBase, singleton
Instance). Values persist via the standard .NET
user-settings mechanism to:
%LOCALAPPDATA%\Microsoft_Corporation\...\user.config
Persisted preferences:
| SettingName | Type | Default | Purpose |
|---|---|---|---|
| ShowSettingsSummary | bool | true | Show the summary panel in Hyper-V Manager's Settings dialog |
| ShowSettingsHighlights | bool | true | Highlight changed settings in the Settings dialog |
That's it for persisted client state. Everything else in this
assembly (BiosData, FirmwareData,
MemoryData, ProcessorData,
NetworkAdapterData, HardDriveData,
SecurityData, ReplicationPrimaryData,
NetworkSwitchData, FibreChannelPortData,
MacAddressRangeData, PhysicalGPUData, etc.)
are in-memory UI models backed by WMI Msvm_* on the host
via IUpdatable.Put() — not persistent client-side
preferences.
UI SettingId categories (referenced by
UIFactory.LoadImage, map UI pages to WMI classes):
Memory, FloppyDrive, IdeDvdDrive, ScsiDvdDrive, HardDrive, SharedDrive, VhdDefaultPath, PhysicalGPUManagement, IdeController, ScsiController, Synth3dVideoAdapter, VMNameAndNotes, NetworkAdapterEmulated, NetworkAdapterSynthetic, FibreChannelPort, FcWorldWideNameRange, NetworkSwitch, FibreChannelSan, SerialPort, AddHardware, AddNetworkSwitch, NetworkSwitchExtension, AddFibreChannelSan, OnServiceStart, OnServiceStop, NUMASpanning, VirtualMachineMove, StorageMove, VMConnectKeyboardOption, VMConnectReleaseKey, VMConnectUseEnhancedMode, EnhancedModePolicy, EnableConfirmations, VMSnapshotDefaultSetting, VMSecondLevelPagingPath, IntegrationComponents, Processor, ProcessorCompatibility, ProcessorVNuma, Bios, Firmware, FirmwareBootEntryFile, FirmwareBootEntryUnknown, VirtualMachineDefaultPath, MacAddressRange, RecoveryServerConfiguration, ReplicationPrimary, ReplicationRecovery, ReplicationRecoveryConverted, Security, LegacySecurity, KeyStorageDrive.
6. Environment Variables
No Hyper-V-specific HYPERV_* env vars were found. Usage
is limited to standard system variables.
6.1. Native (Win32
GetEnvironmentVariableW)
| Variable | Consumers | Purpose |
|---|---|---|
ProgramData |
vmcompute.dll, containerdevicemanagement.dll, vmuidevices.dll,
vmdynmem.dll, vmsynthstor.dll, vmchipset.dll, VmSynthNic.dll,
vsconfig.dll (wrapped as Vml::GetEnvironmentVariableW) |
Locate %ProgramData%\Microsoft\Windows\Hyper-V for VM
configs, saved state, default VHD directory |
USERPROFILE |
hvc.exe | Default location for per-user .hvc profile/config
file |
6.2. Managed
(Environment.GetEnvironmentVariable)
| Variable | Consumers | Purpose |
|---|---|---|
COMPUTERNAME |
Microsoft.Virtualization.Client.Management.dll, Microsoft.HyperV.PowerShell.Cmdlets.dll | Identify local host in connection resolution
(Server.LocalHost, IsLocalhostName,
ServerNames.Resolve); also used in
ServerConnectionException messages |
appdata |
Microsoft.Virtualization.Client.Common.dll
(GetStorageDirectory) |
Location for Hyper-V Manager user settings
(%APPDATA%\Microsoft\Windows\Hyper-V\...) |
VM_CONFIGURATION_ID |
Microsoft.Virtualization.Client.VMBrowser.dll | When launched from VMConnect / shell integration, overrides target VM instance ID |
VM_CONFIGURATION_SERVER |
Microsoft.Virtualization.Client.VMBrowser.dll
(m_EnvironmentConfigServerName) |
Overrides Hyper-V server name to connect to in VM Browser |
No getenv() / _wgetenv() calls in Hyper-V
code (the fegetenv matches in
HyperVSysprepProvider.dll are FP-environment, not
env-vars).
7. Configuration Files (INI / JSON / Other)
No INI files and no on-disk JSON config files are consumed by Hyper-V core binaries. Format is mostly XML plus proprietary binary containers.
7.1. INI / Private Profile API
Only hvc.exe (Hyper-V console
connection tool) uses GetPrivateProfileStringW /
WritePrivateProfileStringW.
- File path: built from
%USERPROFILE%\…\<ConfigFileName> - Purpose: per-user defaults for hvc sessions — serial port pipe names, last-used VM GUIDs
7.2. XML files
| File | Consumer | Purpose |
|---|---|---|
ServerManager\ComponentConfiguration\Hyper-V.xml |
ConfigureHyperV.exe | Server Manager role-configuration template (features, sub-services, prerequisites); read at role install |
<GuestStateDataRoot>\Virtual Machines\<VMID>.xml |
vmms.exe | Legacy pre-v8 per-VM configuration (one XML per VM under the VM's data root) |
<datapath>\UndoLog Configuration\<id>.xml |
vmms.exe | Transactional undo log for VMMS config mutations |
<path>\config.xml |
vmms.exe | Per-switch / per-feature configuration file |
*_ir.xml |
vmms.exe | Import-recovery XML written during VM import/export |
*.xml (wildcard scan) |
vmms.exe | VMMS enumerates all *.xml under directory on startup
(legacy VM discovery) |
7.3. Binary / native container formats
| Extension | Consumer | Purpose |
|---|---|---|
.vmcx |
VMImport.exe, vmms.exe | v8+ VM configuration (binary "virtual machine configuration";
replaced .xml) |
.vmgs |
vmms.exe | Virtual Machine Guest State — encrypted Gen2 firmware/TPM state for
shielded VMs; bound to
Msvm_VirtualSystemSettingData.GuestStateFile /
.SourceGuestStateFile /
.GuestStateDataRoot |
.vmrs |
vmcompute.exe (HCS) | Virtual Machine Runtime State — memory/runtime snapshot; format
Bugcheck_<GUID>.vmrs on crash |
.vhd / .vhdx / .vhds / .avhdx |
vmms.exe, Msvm_VirtualHardDiskSettingData |
VHD formats (dynamic, differencing, shared-set) |
7.4. JSON / feature-flagged config
HcsSchema— referenced as a Wil feature flag (Feature_Vmms_HcsSchema) inMicrosoft.Virtualization.Client.Wizards.dllwithisAlwaysDisabled = true/isAlwaysEnabled = false. It's a feature toggle that enables the HCS JSON schema path in VMMS; there is no literalHcsSchema.jsonfile on disk. When enabled, vmcompute consumes an in-memory JSON document built via the HCS API.- No references found to
virtualization.cfgorHyper-V.configfilenames. NetNat.mof,WindowsVirtualizationUninstall.mof,rootporterr.mofare WMI MOFs, not runtime config files.