Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Retrieves information about the virtual hard disk files.
Syntax
uint32 GetVirtualHardDiskInfo(
[in] string Path,
[out] string Info,
[out] CIM_ConcreteJob REF Job
);
Parameters
-
Path [in]
-
Type: string
A fully qualified path that specifies the location of the disk image file.
-
Info [out]
-
Type: string
If successful, this object contains the information for the requested virtual hard disk. This is an embedded instance of Msvm_VirtualHardDiskInfo.
-
Job [out]
-
Type: CIM_ConcreteJob
A reference to the job (can be null if the task is completed).
Return value
Type: uint32
This method can return one of the following values.
-
Completed with No Error (0)
-
Method Parameters Checked - Job Started (4096)
-
Failed (32768)
-
Access Denied (32769)
-
Not Supported (32770)
-
Status is unknown (32771)
-
Timeout (32772)
-
Invalid parameter (32773)
-
System is in used (32774)
-
Invalid state for this operation (32775)
-
Incorrect data type (32776)
-
System is not available (32777)
-
Out of memory (32778)
-
File not found (32779)
Remarks
Access to the Msvm_ImageManagementService class might be restricted by UAC Filtering. For more information, see User Account Control and WMI.
Examples
The following C# example retrieves information about the virtual hard disk files. The referenced utilities can be found in Common Utilities for the Virtualization Samples.
using System;
using System.Xml;
using System.Management;
namespace HyperVSamples
{
class GetVirtualHardDiskInfoClass
{
static void DisplayPropertyValue(string propertyName, XmlDocument doc)
{
string xpath = string.Format(@"//PROPERTY[@NAME = '{0}']/VALUE/child::text()", propertyName);
XmlNode node = doc.SelectSingleNode(xpath);
if (node == null)
{
if (propertyName != "ParentPath")
{
throw new Exception("GetVirtualHardDiskInfo returned an invalid CIM_XML instance");
}
}
else
{
Console.WriteLine("{0}:{1}", propertyName, node.Value);
}
}
static void DisplayVHDProperties(string diskInfo)
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(diskInfo);
//fileSize
DisplayPropertyValue("FileSize", doc);
//MaxInternalSize
DisplayPropertyValue("MaxInternalSize", doc);
//disk type
DisplayPropertyValue("Type", doc);
//InUse should be false
DisplayPropertyValue("InUse", doc);
//InSavedState should be FALSE
DisplayPropertyValue("InSavedState", doc);
//ParentPath
DisplayPropertyValue("ParentPath", doc);
}
static void GetVirtualHardDiskInfo(string path)
{
ManagementScope scope = new ManagementScope(@"root\virtualization", null);
ManagementObject imageService = Utility.GetServiceObject(scope, "Msvm_ImageManagementService");
ManagementBaseObject inParams = imageService.GetMethodParameters("GetVirtualHardDiskInfo");
inParams["Path"] = path;
ManagementBaseObject outParams = imageService.InvokeMethod("GetVirtualHardDiskInfo", inParams, null);
if (outParams != null)
{
if ((UInt32)outParams["ReturnValue"] == ReturnCode.Completed)
{
//no error
string diskInfo = (string)outParams["Info"];
DisplayVHDProperties(diskInfo);
}
else
{ // error occurred
Console.WriteLine("GetVirtualHardDiskInfo failed. ReturnValue:{0}", (UInt32)outParams["ReturnValue"]);
}
}
else
{
Console.WriteLine("WMI failed");
}
inParams.Dispose();
outParams.Dispose();
imageService.Dispose();
}
static void Main(string[] args)
{
if (args != null && args.Length != 1)
{
Console.WriteLine("Usage: GetVirtualHardDiskInfo path");
return;
}
GetVirtualHardDiskInfo(args[0]);
}
}
}
The following VBScript example retrieves information about the virtual hard disk files.
option explicit
dim objWMIService
dim managementService
dim fileSystem
const wmiSuccessful = 0
Main()
'-----------------------------------------------------------------
' Main
'-----------------------------------------------------------------
Sub Main()
dim path, objArgs, computer
set fileSystem = Wscript.CreateObject("Scripting.FileSystemObject")
computer = "."
set objWMIService = GetObject("winmgmts:\\" & computer & "\root\virtualization")
set managementService = objWMIService.ExecQuery("Select * from Msvm_ImageManagementService").ItemIndex(0)
set objArgs = WScript.Arguments
if WScript.Arguments.Count = 1 then
path = objArgs.Unnamed.Item(0)
else
WScript.Echo "usage: cscript GetVirtualHardDiskInfo.vbs Path"
WScript.Quit(1)
end if
if GetVirtualHardDiskInfo(path) then
WriteLog "Done"
WScript.Quit(0)
else
WriteLog "GetVirtualHardDiskInfo failed"
WScript.Quit(1)
end if
End Sub
'-----------------------------------------------------------------
' Query a filed value from CIM_XML and display it
'-----------------------------------------------------------------
Sub DisplayPropertyValue(propertyName, doc)
dim xpath, node
xpath = Format1("//PROPERTY[@NAME = '{0}']/VALUE/child:text()", propertyName)
set node = doc.selectSingleNode(xpath)
if node Is Nothing then
if propertyName <> "ParentPath" then
WriteLog "GetVirtualHardDiskInfo returned an invalid CIM_XML instance"
end if
else
WriteLog Format2("{0}:{1}", propertyName, node.Text)
end if
End Sub
'-----------------------------------------------------------------
' Display the VHD properties
'-----------------------------------------------------------------
Sub DisplayVHDProperties(diskInfo)
dim objXMLDoc
set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
objXMLDoc.loadXML(diskInfo)
'fileSize
DisplayPropertyValue "FileSize", objXMLDoc
'MaxInternalSize
DisplayPropertyValue "MaxInternalSize", objXMLDoc
'disk type
DisplayPropertyValue "Type", objXMLDoc
'InUse
DisplayPropertyValue "InUse", objXMLDoc
'InSavedState
DisplayPropertyValue "InSavedState", objXMLDoc
'ParentPath
DisplayPropertyValue "ParentPath", objXMLDoc
End Sub
'-----------------------------------------------------------------
' Execute ExpandVirtualHardDisk
'-----------------------------------------------------------------
Function GetVirtualHardDiskInfo(path)
WriteLog Format1("Sub GetVirtualHardDiskInfo({0})", path)
dim objInParam, objOutParams
GetVirtualHardDiskInfo = false
set objInParam = managementService.Methods_("GetVirtualHardDiskInfo").InParameters.SpawnInstance_()
objInParam.Path = Path
set objOutParams = managementService.ExecMethod_("GetVirtualHardDiskInfo", objInParam)
if (objOutParams.ReturnValue = wmiSuccessful) then
DisplayVHDProperties objOutParams.Info
GetVirtualHardDiskInfo = true
else
WriteLog Format2("GetVirtualHardDiskInfo {0} failed with error {1}", Path, objOutParams.ReturnValue)
end if
End Function
'-----------------------------------------------------------------
' Create the console log files.
'-----------------------------------------------------------------
Sub WriteLog(line)
dim fileStream
set fileStream = fileSystem.OpenTextFile(".\GetVirtualHardDiskInfo.log", 8, true)
WScript.Echo line
fileStream.WriteLine line
fileStream.Close
End Sub
'------------------------------------------------------------------------------
' The string formatting functions to avoid string concatenation.
'------------------------------------------------------------------------------
Function Format2(myString, arg0, arg1)
Format2 = Format1(myString, arg0)
Format2 = Replace(Format2, "{1}", arg1)
End Function
'------------------------------------------------------------------------------
' The string formatting functions to avoid string concatenation.
'------------------------------------------------------------------------------
Function Format1(myString, arg0)
Format1 = Replace(myString, "{0}", arg0)
End Function
Requirements
Minimum supported client |
None supported |
Minimum supported server |
Windows Server 2008 |
End of client support |
None supported |
End of server support |
Windows Server 2012 |
Namespace |
Root\Virtualization |
MOF |
|