Monday, May 4, 2026

Hyper-V settings and configuration (Windows Server 2025)

Hyper-V Configuration Parameters

Дonfiguration surfaces exposed by Hyper-V on Windows Server 2025 with March 2026 patch.


Contents

  1. Registry — User-Mode Services

    § Key Binaries
    1.1 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization vmms.exe
    vmwp.exe
    1.2 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Worker vmms.exe
    vmwp.exe
    1.3 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\VML vmms.exe
    vmcompute.exe
    computecore.dll
    1.4 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Migration vmms.exe
    vmwp.exe
    1.5 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\Replication vmms.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\Containers vmcompute.exe
    vmusrv.dll
    1.9 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\FlexIOV
    …\TimeSync
    …\VmSession
    …\FibreChannel
    …\WorkerAppContainer
    vmflexio.dll
    icsvc.dll
    vmsynthfcvdev.dll
    vmwpctrl.dll
    1.10 HKLM\SOFTWARE\Microsoft\HgsClient hgclientservice.dll
    1.11 Various SYSTEM\CurrentControlSet keys icsvc.dll
    vmictimeprovider.dll
    vmicrdv.dll
    icsvcvss.dll
    1.12 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization (vsconfig.dll facade) vmms.exe
    vmwp.exe
    1.13 Various OS keys vmms.exe
    vmcompute.exe
  2. Registry — Kernel-Mode Drivers

    § Key Driver(s)
    2.1 HKLM\SYSTEM\CurrentControlSet\Services\vid\Parameters vid.sys
    2.2 HKLM\SYSTEM\CurrentControlSet\Services\winhvr\Parameters
    …\hvservice
    …\hvcrash\Parameters
    winhv.sys
    winhvr.sys
    hvservice.sys
    hvcrash.sys
    2.3 HKLM\SYSTEM\CurrentControlSet\Services\vmbus\Parameters
    …\vmbkmclr\Parameters
    …\hvsocket
    vmbus.sys
    vmbusr.sys
    vmbkmcl.sys
    vmbkmclr.sys
    hvsocket.sys
    2.4 HKLM\SYSTEM\CurrentControlSet\Services\storvsp
    …\storvsc\Parameters\Device
    …\vhdmp\Parameters
    storvsp.sys
    storvsc.sys
    vhdmp.sys
    vhdparser.sys
    pvhdparser.sys
    vmstorfl.sys
    2.5 HKLM\SYSTEM\CurrentControlSet\Services\VmsMp\Parameters vmswitch.sys
    2.6 Per-device SW key (via WDF/PnP) pcip.sys
    2.7 HKLM\SYSTEM\CurrentControlSet\Services\Video\Virtualization HyperVideo.sys
    2.8 HKLM\SYSTEM\CurrentControlSet\Services\hyperkbd\Parameters hyperkbd.sys
    2.9 HKLM\SYSTEM\CurrentControlSet\Services\wcifs\Parameters wcifs.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
  3. Group Policy / MDM Policies

  4. WMI Schema (root\virtualization\v2)

  5. Client-Side Settings (UI preferences)

  6. Environment Variables

  7. Configuration Files (INI / JSON / Other)


Sections below are populated by parallel extraction from decompiled binaries. See individual sections for per-component details and binary!function source 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 by icsvc.dll!ICTimeSyncIpc::PersistUniqueId, read by vmictimeprovider.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 by vmicrdv.dll.
  • HKLM\SOFTWARE\Microsoft\Virtualization\ExcludedVssWriters\ExcludedWriters (REG_MULTI_SZ) — read by icsvcvss.dll; VSS writer GUIDs skipped during host-initiated backup.
  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Reliability\Shutdownwritten by icsvcvss.dll!VssClientBase::ChangeRegistryValuesForPlannedShutdown: Comment, ReasonCode, Timestamp (planned-shutdown tagging, copies HKLM\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\ParametersMaxConnections (REG_DWORD) — vmms.exe for WinRM backing
  • HKLM\SYSTEM\CurrentControlSet\Control\Network\Interfaces\{GUID}\Configurationvmms.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 by computecore.dll, vmchipset.dll!GetVirtualDiskPrefix and vmsynthstor.dll!SynthStorAttachment::Mount; maps disk prefix → device class GUID (fallback {f916c826-f0f5-4cd9-be68-4fd638cf9a53})
  • HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Managementvmcompute.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

storvspHKLM\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).

storvscHKLM\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.

vhdmpHKLM\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

vhdparserHKLM\SYSTEM\CurrentControlSet\Services\vhdparser\Parameters: EnableVhdopDriver (REG_DWORD bool).

pvhdparserHKLM\SYSTEM\CurrentControlSet\Services\pvhdparser\Parameters: RdssdToAbcMigration, FastPause, FastClose, IgnoreFlushes (all REG_DWORD bool). Also reads HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName.

vmstorflHKLM\SYSTEM\CurrentControlSet\Services\vmstorfl WDF Parameters: Enabled (REG_DWORD bool) — activate storage filter.

vdrvrootHKLM\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:

  1. BCD options under the {hypervisorsettings} object — set via bcdedit /set {hypervisorsettings} NAME value.
  2. Registry fallback under HKLM\SYSTEM\CurrentControlSet\Control\Hypervisor — key opened by hvloader!HvlLoadHypervisor via OslGetControlSubkey. When a BCD option is absent, hvloader tries 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.SmbPolicyManager adds the VM-host SPN to AllowFreshCredentials and AllowFreshCredentialsWhenNTLMOnly for CredSSP live-migration.

3.3. Not present

  • No HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate references 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 start
  • ProcessID (uint32) — worker (vmwp) PID
  • TimeOfLastConfigurationChange (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, TargetMemoryBuffer
  • IsVirtualized, SwapFilesInUse
  • MaxMemoryBlocksPerNumaNode
  • 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, ParentTimestamp
  • MaxInternalSize, BlockSize, LogicalSectorSize, PhysicalSectorSize
  • VirtualDiskId
  • IsPmemCompatible, PmemAddressAbstractionType, DataAlignment

Msvm_VirtualHardDiskState — read-only: FileSize, InUse, MinInternalSize, PhysicalSectorSize, Alignment, FragmentationPercentage, Timestamp.

Msvm_VHDSetInformation (.vhds AVHDX sets) — Path, SnapshotIdList[], AllPaths[].

Msvm_VHDSnapshotInformationFilePath, 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_VirtualEthernetSwitchSettingDataIOVPreferred=FALSE, ExtensionOrder[], BandwidthReservationMode {0..3}, PacketDirectEnabled, TeamingEnabled, AllowNetLbfoTeams, BypassExtensionStack, RequiredExtensionIds[].

Msvm_VirtualEthernetSwitchManagementService — methods: DefineSystem, DestroySystem, ModifySystemSettings, AddResourceSettings, ModifyResourceSettings, RemoveResourceSettings, AddFeatureSettings, ModifyFeatureSettings, RemoveFeatureSettings.

Msvm_VirtualEthernetSwitchManagementCapabilitiesIOVSupport, IOVSupportReasons[], AsynchronousMethodsSupported[].

Msvm_EthernetSwitchPortVMQOffloadUsage, 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_HgsGuardianName, SigningCertificate[], EncryptionCertificate[], EncryptionCertificateSignature, EncryptionCertificateSignatureAlgorithm, HasPrivateSigningKey, GuardianMetadataVersion. Methods: NewByAcceptCertificates, NewByCertificateThumbprints, NewByGenerateCertificates, Import, Export, Remove.

MSFT_HgsKeyProtectorOwner, Guardians[], RawData[]. Methods: NewByGuardians, Grant, Revoke, ConvertToByRawBytes.

MSFT_HgsKeyProtectorOperationsUnwrapKeyProtector, CreateKeyProtector, EncryptDataWithKeyProtector, DecryptDataWithKeyProtector.

4.6. Devices — DDA / GPU / Flex-IO

Msvm_AssignableDeviceService, Msvm_AssignableDeviceDismountSettingData, Msvm_PciExpress, Msvm_PciExpressSettingData.

Msvm_GpuPartitionDeviceInstancePath, 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) in Microsoft.Virtualization.Client.Wizards.dll with isAlwaysDisabled = true / isAlwaysEnabled = false. It's a feature toggle that enables the HCS JSON schema path in VMMS; there is no literal HcsSchema.json file on disk. When enabled, vmcompute consumes an in-memory JSON document built via the HCS API.
  • No references found to virtualization.cfg or Hyper-V.config filenames.
  • NetNat.mof, WindowsVirtualizationUninstall.mof, rootporterr.mof are WMI MOFs, not runtime config files.