0byt3m1n1
Path:
C:
/
Windows
/
System32
/
wbem
/
[
Home
]
File: WmiWtProvider.mof
//---------------------------------------------------------------------------- // // WinTargetProv.mof: WinTarget WMI Provider definitions. // //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // // Provider registration. // //---------------------------------------------------------------------------- // // Provider namespace. // #pragma namespace( "\\\\.\\ROOT\\wmi" ) #pragma autorecover // // Declare this as a Win32 Provider. // instance of __Win32Provider as $P { Name = "WinTargetProv"; CLSID = "{E2AAE5B9-BA42-4AB3-9BCF-A38A9FC4CDAA}"; HostingModel = "LocalServiceHost"; }; // // Register as an instance provider. // instance of __InstanceProviderRegistration { Provider = $P; SupportsGet = TRUE; SupportsPut = TRUE; SupportsEnumeration = TRUE; SupportsDelete = TRUE; }; // // Register as a method provider. // instance of __MethodProviderRegistration { Provider = $P; }; //---------------------------------------------------------------------------- // // Provider classes. // //---------------------------------------------------------------------------- // // WinTarget iSNS Server class. // [ Dynamic, Provider("WinTargetProv"), Description("Class describing an iSNS server where the Microsoft iSCSI " "Target registers and retrieves target and information.") ] class WT_ISnsServer { // // The DNS or IP address of the iSNS server. // [Key, Read, Write, Description("iSNS server DNS Name/IP address")] string ServerName; }; // // WinTarget Host class. // [ Dynamic, Provider("WinTargetProv"), Description("Class describing an iSCSI target. Use the NewHost() method " "to create a new target. HostName must be a unique. It is " "recommended that the initiator's NetBIOS name be used as the " "HostName for easier identification.") ] class WT_Host { // // Host name. // [Key, Read, Description("Target friendly name")] string HostName; // // Host enable flag. // [Read, Write, Description("Enable/Disable Target")] boolean Enabled; // // Host description. // [Read, Write, Description("Target friendly description")] string Description; // // Target IQN. // [Read, Write, Description("Target IQN")] string TargetIQN; // // Host status. // [Read, Values{"Not Connected", "Connected"}, ValueMap{"0", "1"}, Description("Target status")] sint32 Status; // // Last time this host logged in. // [Read, Description("Last Initiator login timestamp")] datetime LastLogIn; // // Idle duration since last session disconnected from this host (seconds). // [Read, Description("Idle duration since last session disconnected from this host (seconds)")] uint32 IdleDuration; // // Flag indicating whether CHAP is enabled on this host. // [Read, Write, Description("Enable CHAP authentication")] boolean EnableCHAP; // // CHAP user name. // [Read, Write, Description("CHAP user name")] string CHAPUserName; // // CHAP secret. // This field does not contain the actual secret, just text indicating // that a secret exists. // [Read, Write, Description("CHAP secret")] string CHAPSecret; // // Flag indicating whether reverse CHAP is enabled for this host. // [Read, Write, Description("Enable reverse CHAP authentication")] boolean EnableReverseCHAP; // // Reverse CHAP user name. // [Read, Write, Description("Reverse CHAP user name")] string ReverseCHAPUserName; // // Reverse CHAP secret. // This field does not contain the actual secret, just text indicating // that a secret exists. // [Read, Write, Description("Reverse CHAP secret")] string ReverseCHAPSecret; // // Target max receive data segment length (in bytes). // [Read, Write, Description("Target maximum receive data segment length (bytes)")] uint32 TargetMaxRecvDataSegmentLength; // // Target first burst length (in bytes). // [Read, Write, Description("Target first burst length (bytes)")] uint32 TargetFirstBurstLength; // // Target max burst length (in bytes). // [Read, Write, Description("Target maximum burst length (bytes)")] uint32 TargetMaxBurstLength; // // Number of receive buffers. // [Read, Write, Description("Number of Receive Buffers")] uint32 NumRecvBuffers; // // Enforce idle timeout detection. // [Read, Write, Description("Enforce Initiator idle detection")] boolean EnforceIdleTimeoutDetection; // // Resource group. // [Read, Description("Resource Group (only valid in a cluster)")] string ResourceGroup; // // List of active sessions. // [Read, Description("List of active sessions")] WT_Session Sessions[]; // // Target identification Guid // [Read, Description("Unique identifier of the iSCSI Target")] string Guid; // // Max number of connections per Session supported // [Read, Description("Maximum number of connections allowed within an iSCSI session")] uint32 MaxConnectionsPerSession; // // Initial R2T request preference // [Read, Description("Flag indicating whether an initial R2T request is preferred")] boolean InitialR2TPreference; // // Immediate data preference // [Read, Description("Flag indicating whether immediate data is preferred")] boolean ImmediateDataPreference; // // Max number of outstanding R2T requests supported // [Read, Description("Maximum number of outstanding R2T requests supported")] uint32 MaxOutstandingR2T; // // Data sequences in order preference // [Read, Description("Flag indicating whether data sequences are preferred to be transferred with continuously non-decreasing sequence offsets")] boolean DataSequenceInOrderPreference; // // Data pdu within sequence in order preference // [Read, Description("Flag indicating whether data PDUs within sequences are preferred to be at continuously increasing addresses")] boolean DataPduInOrderPreference; // // Default time in seconds to wait // [Read, Description("Preferred minimum time, in seconds, to wait before attempting an explicit/implicit logout or an active task reassignment after an unexpected connection termination or a connection reset")] uint32 DefaultTime2WaitPreference; // // Default time in seconds to retain // [Read, Description("Preferred maximum time, in seconds after an initial wait (Time2Wait), before which an active task reassignment is still possible after an unexpected connection termination or a connection reset")] uint32 DefaultTime2RetainPreference; // // Preferred error recovery level // [Read, Description("Preferred error recovery level")] uint32 ErrorRecoveryLevelPreference; // // Primary header digest method // [Read, Values{"Other", "None", "CRC32C"}, ValueMap{"1", "2", "3"}, Description("Primary header digest method")] uint16 PrimaryHeaderDigestMethod; // // Primary data digest method // [Read, Values{"Other", "None", "CRC32C"}, ValueMap{"1", "2", "3"}, Description("Primary data digest method")] uint16 PrimaryDataDigestMethod; // // Secondary header digest method // [Read, Values{"Other", "None", "CRC32C"}, ValueMap{"1", "2", "3"}, Description("Secondary header digest method")] uint16 SecondaryHeaderDigestMethod; // // Secondary data digest method // [Read, Values{"Other", "None", "CRC32C"}, ValueMap{"1", "2", "3"}, Description("Secondary data digest method")] uint16 SecondaryDataDigestMethod; // // Request markers on receive // [Read, Description("Flag indicating whether to request markers on receive")] boolean RequestingMarkersOnReceive; // // Primary authentication method // [Read, Values{"None", "SRP", "CHAP", "Kerberos"}, ValueMap{"2", "3", "4", "5"}, Description("Primary authentication method")] uint16 PrimaryAuthenticationMethod; // // Secondary authentication method // [Read, Values{"None", "SRP", "CHAP", "Kerberos"}, ValueMap{"2", "3", "4", "5"}, Description("Secondary authentication method")] uint16 SecondaryAuthenticationMethod; // // Creates a new host using the specified host name. // [Implemented, Static, Description("Create a New Target")] WT_Host NewHost( [IN, Description("Target Friendly Name")] string HostName, [IN, Description("Resource Group (optional)")] string ResourceGroup ); // // Add a WTDisk to this host. // [Implemented, Description("Assign iSCSI Disk To Target")] void AddWTDisk( [IN, Description("iSCSI Disk Index")] uint32 WTD ); // // Remove a WTDisk from this host. // [Implemented, Description("Remove iSCSI Disk From Target")] void RemoveWTDisk( [IN, Description("iSCSI Disk Index")] uint32 WTD ); // // Remove all WTDisks assigned to this host. // [Implemented, Description("Remove All iSCSI Disks From Target")] void RemoveAllWTDisks(); // // Set the LUN mapping for the specified WTDisk. // [Implemented, Description("Set the SCSI LUN Index of iSCSI Disk")] void SetWTDiskLunMapping( [IN, Description("iSCSI Disk Index")] uint32 WTD, [IN, Description("SCSI LUN")] uint32 LUN ); }; // // Identification method. // [ Dynamic, Provider("WinTargetProv"), Association, Description("Class that associates a target with an initiator. " "The identification method cannot be edited. You must delete " "and recreate the identification method.") ] class WT_IDMethod { // // Name of host this identification method belongs to. // [Key, Read, Description("Target Host Name")] string HostName; // // Identification method. // [Key, Read, Write, Values{"DNSName", "IPAddress", "MACAddress", "IQN", "IPv6Address"}, ValueMap{"1", "2", "3", "4", "5"}, Description("Identification Method")] sint32 Method; // // Method value. // [Key, Read, Write, Description("Identification Value")] string Value; }; // // Lun mapping class. // [ Dynamic, Provider("WinTargetProv"), Association, Description("Class that associates an iSCSI disk to a target.") ] class WT_LUNMapping { // // Host name. // [Key, Read, Write, Description("Target HostName")] string HostName; // // WinTarget Disk index. // [Key, Read, Write, Description("iSCSI Disk Index")] uint32 WTD; // // Logical unit number. // [Read, Write, Description("SCSI LUN")] uint32 LUN; }; // // Session class. // [ Dynamic, Provider("WinTargetProv"), Association, Description("Class that describes an active session between an initiator and a target.") ] class WT_Session { // // Target Session Identifier. // [Key, Read, Description("Target Session Identifier")] uint16 TSIH; // // Initiator Session Identifier. // [Read, Description("Initiator Session Identifier")] uint64 ISID; // // Session Type. // [Read, Values{"Discovery", "Normal"}, ValueMap{"0", "1"}, Description("Session Type")] uint32 SessionType; // // Host Name. // [Read, Description("Name of the host that is servicing this session")] string HostName; // // Initiator IQN. // [Read, Description("Initiator iSCSI Qualified Name")] string InitiatorIQN; // // List of connections in this session. // [Read, Description("List of connections in session")] WT_Connection Connections[]; // // Host Target IQN. // [Read, Description("IQN Name of the Target that is servicing this session")] string HostTargetIQN; // // Flag indicating whether initial R2T is allowed // [Read, Description("Flag indicating whether initial R2T is allowed")] boolean AllowInitialR2T; // // Flag indicating whether immdidate data is allowed // [Read, Description("Flag indicating whether immdidate data is allowed")] boolean AllowImmediateData; // // Maximum first data burst length in bytes // [Read, Description("Maximum amount in bytes of unsolicited data an initiator may send during the execution of a single SCSI command")] uint32 MaxFirstDataBurstLength; // // Maximum data burst length in bytes // [Read, Description("Maximum SCSI data payload in bytes in a Data-In or a solicited Data-Out iSCSI sequence")] uint32 MaxDataBurstLength; // // Is data sequence in order // [Read, Description("Flag indicating whether data sequences must be transferred with continuously non-decreasing sequence offsets")] boolean IsDataSequenceInOrder; // // Is data pdu in order // [Read, Description("Flag indicating whether data PDUs within sequences must be at continuously increasing addresses")] boolean IsDataPduInOrder; // // Maximum connections in a session // [Read, Description("Maximum number of connections allowed within the session")] uint32 MaxConnections; // // Default time to wait // [Read, Description("Minimum time, in seconds, to wait before attempting an explicit/implicit logout or an active task reassignment after an unexpected connection termination or a connection reset")] uint32 DefaultTime2Wait; // // Default time to retain // [Read, Description("Maximum time, in seconds after an initial wait (Time2Wait), before which an active task reassignment is still possible after an unexpected connection termination or a connection reset")] uint32 DefaultTime2Retain; // // Number of current connections // [Read, Description("Current number of connections")] uint32 CurrentConnections; // // Maximum number of outstanding R2T requests supported // [Read, Description("Maximum number of outstanding R2T requests supported")] uint32 MaxOutstandingR2T; // // Error recovery level // [Read, Description("Error recovery level")] uint32 ErrorRecoveryLevel; }; // // Connection info class. // [ Dynamic, Provider("WinTargetProv"), Association, Description("Class that describes a connection in a session.") ] class WT_Connection { // // Connection Identifier. // [Key, Read, Description("Connection Identifier")] uint16 CID; // // Session Identifier. // [Key, Read, Description("Identifier of the session that this connection belongs to")] uint16 TSIH; // // Initiator IP Address. // [Read, Description("Initiator IP Address")] string InitiatorIPAddress; // // Initiator Port. // [Read, Description("Initiator Port")] uint32 InitiatorPort; // // Target IP Address. // [Read, Description("Target IP Address")] string TargetIPAddress; // // Target Port. // [Read, Description("Target Port")] uint32 TargetPort; // // Header Digest. // [Read, Description("Flag indicating whether header digest is enabled on this connection")] boolean HeaderDigestEnabled; // // Data Digest. // [Read, Description("Flag indicating whether data digest is enabled on this connection")] boolean DataDigestEnabled; // // Maximum receive data segment length supported // [Read, Description("Maximum receive data segment length supported")] uint32 MaxReceiveDataSegmentLength; // // Maximum transmit data segment length // [Read, Description("Maximum transmit data segment length")] uint32 MaxTransmitDataSegmentLength; // // Primary header digest method // [Read, Values{"Other", "None", "CRC32C"}, ValueMap{"1", "2", "3"}, Description("Primary header digest method")] uint16 HeaderDigestMethod; // // Primary data digest method // [Read, Values{"Other", "None", "CRC32C"}, ValueMap{"1", "2", "3"}, Description("Primary data digest method")] uint16 DataDigestMethod; // // Flag indicating whether receiving markers are in use // [Read, Description("Flag indicating whether receiving markers are in use")] boolean ReceivingMarkers; // // Flag indicating whether sending markers are in use // [Read, Description("Flag indicating whether sending markers are in use")] boolean SendingMarkers; // // Active version number of the iSCSI specification negotiated on this connection // [Read, Description("Active version number of the iSCSI specification negotiated on this connection")] uint8 ActiveVersion; // // Authentication method used on this connection // [Read, Values{"None", "SRP", "CHAP", "Kerberos"}, ValueMap{"2", "3", "4", "5"}, Description("Authentication method used on this connection")] uint16 AuthenticationMethodUsed; // // Flag indicating whether mutual authentication is used on this connection // [Read, Description("Flag indicating whether mutual authentication is used on this connection")] boolean IsMutualAuthentication; }; // // Embedded object - matching VDS_STORAGE_IDENTIFIER // [ Description("Vital Product Data Identification Descriptor.") ] class WT_VPDIdentificationDescriptor { [ Read, Values{ "VpdCodeSetReserved", "VpdCodeSetBinary", "VpdCodeSetAscii", "VpdCodeSetUTF8" }, ValueMap{ "0", "1", "2", "3"}, Description("This property indicates how to interpret the payload of the identification descriptor.")] uint8 CodeSet; [ Read, Values{ "VpdIdentifierTypeVendorSpecific", "VpdIdentifierTypeVendorId", "VpdIdentifierTypeEUI64", "VpdIdentifierTypeFCPHName", "VpdIdentifierTypePortRelative", "VpdIdentifierTypeTargetPortGroup", "VpdIdentifierTypeLogicalUnitGroup", "VpdIdentifierTypeMD5LogicalUnitId", "VpdIdentifierTypeSCSINameString" }, ValueMap{ "0", "1", "2", "3", "4", "5", "6", "7", "8" }, Description("Naming authority")] uint8 IdentifierType; //[ Read, // Values{ "VpdAssocDevice", "VpdAssocPort", "VpdAssocTarget" }, // ValueMap{ "0", "1", "2" }, // Description("Type of association")] //uint8 Association; [Read, Description("The actual data for the identifier")] uint8 Identifier[]; }; // // Embedded object - matching VDS_STORAGE_DEVICE_ID_DESCRIPTOR // [ Description("Vital Product Data Identification Descriptor.") ] class WT_VDSLunInformation { [ read, Description("The SCSI-2 device type of the LUN.")] uint8 DeviceType; [ read, Description("The SCSI-2 device type modifier of the LUN. For LUNs that have no device type modifier, the value is zero.")] uint8 DeviceTypeModifier; [ read, Description("If TRUE, the LUN supports multiple outstanding commands; otherwise, FALSE. The synchronization of the queue is the responsibility of the port driver.")] boolean CommandQueueing; [ Read, Values{ "VDSBusTypeUnknown", "VDSBusTypeScsi", "VDSBusTypeAtapi", "VDSBusTypeAta", "VDSBusType1394", "VDSBusTypeSsa", "VDSBusTypeFibre", "VDSBusTypeUsb", "VDSBusTypeRAID", "VDSBusTypeiScsi" "VDSBusTypeSas", "VDSBusTypeSata", "VDSBusTypeSd", "VDSBusTypeMmc", "VDSBusTypeMax", "VDSBusTypeFileBackedVirtual" }, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"}, Description("The bus type of the LUN ")] sint32 BusType; [ read, Description("Vendor identifier")] string VendorId; [ read, Description("Product identifier, typically a model number.")] string ProductId; [ read, Description("Product Revision.")] string ProductRevision; [ read, Description("The LUN serial number")] string SerialNumber; [ read, Description("The signature of the LUN in GUID format.")] string DiskSignature; [ read, Description("Array of VPD Identification Descriptors")] WT_VPDIdentificationDescriptor DeviceIdDescriptor[]; }; // // WinTarget Disk class. // [ Dynamic, Provider("WinTargetProv"), Description("Class describing an iSCSI disk. Use the CreateXXXWTDisk()" " method to create a new iSCSI disk.") ] class WT_Disk { // // Index. // [Key, Read, Description("iSCSI Disk Index")] uint32 WTD; // // VHD Type. // [Read, Values{"Fixed", "Dynamic", "Differencing", "ReadOnlySnapshot", "WritableSnapshot", "RamDisk", "PassThrough"}, ValueMap{"2", "3", "4", "30000", "30001", "30002", "30003"}, Description("iSCSI Disk Type")] sint32 Type; // // Various WTDisk flags. // ShadowWTDisk = 0x02 // [Read, BitValues{"ReadOnlyWTDisk", "ShadowWTDisk"}, BitMap{"0x00000001", "0x00000002"}, Description("iSCSI Disk Flags")] sint32 Flags; // // Current WTDisk status. // [Read, Values{"Not Connected", "Connected", "Reverting", "Initializing", "Resizing"}, ValueMap{"0", "1", "2", "3", "4"}, Description("iSCSI Disk Status")] sint32 Status; // // Description of this WTDisk. // [Read, Write, Description("iSCSI Disk Friendly Description")] string Description; // // Device path. // [Read, Description("iSCSI Disk Persistent Device Path")] string DevicePath; // // Active device path. // [Read, Description("iSCSI Disk Active Device Path. For a pass-through device," " this is a decorated active Win32 device path in the format" " of 'SCSI:<win32_device_path>'. For other device types," " this property always has the same value as the DevicePath" " property")] string ActiveDevicePath; // // Path to parent VHD. // [Read, Description("Parent VHD Path")] string ParentPath; // // Parent Index. // [Read, Description("Parent iSCSI Disk Index")] uint32 ParentWTD; // // WTDisk size in MB. // [Read, Description("iSCSI Disk Size (MB)")] uint32 Size; // // Allocated size of VHD. // [Read, Description("Allocated Size (MB)")] uint32 AllocatedSize; // // Serial number. // [Read, Description("iSCSI Disk Serial Number")] string SerialNumber; // // Data View mount status. // [Read, Values{"NotMounted", "MountSnapshot"}, ValueMap{"0", "1"}, Description("Deprecated")] sint32 DVMountStatus; // // If Data View mount status is MountSnapshot, this member contains the // timestamp of the associated snapshot. // [Read, Description("Deprecated")] datetime DVTimeStamp; // // Device Id of the mounted disk. // [Read, Description("Deprecated")] string DVDeviceId; // // Start Time of Asynchronous Operation on This WT_Disk. // [Read, Description("Timestamp of Asynchronous Operation Started")] datetime AsyncOpStartTime; // // End Time of Asynchronous Operation on This WT_Disk, Either Succeeded Or Failed. // [Read, Description("Timestamp of Asynchronous Operation Ended")] datetime AsyncOpEndTime; // // Resource group. // [Read, Description("Resource Group (only valid in a cluster)")] string ResourceGroup; // // Enabled / Disabled // [Read, Write, Description("Functional state for the Disk.")] boolean Enabled; // // VDS identification Guid // [Read, Description("Unique identifier of the VirtualDisk for VDS consumption")] string Guid; // // Volume GUID // [Read, Description("Identifier of the Volume where the disk resides")] string DeviceVolumeGuid; // // VDS LUN Information // [ Read, Description("Vital Product Data identification information, formatted in a VDS friendly manner")] WT_VDSLunInformation VdsLunInfo; [ Read, Description("When the WT_Disk is derived from an exported snapshot that is also locally mounted," "it indicates the Snapshot identifier.")] string LMSnapshotId; // // InternalCode - used to understand if the virtual disk is operational // or disabled / non operational because of a service originated error // [Read, Description("Operational code set by the iSCSI Target Service")] uint32 InternalCode; // // Logical block/sector size of underlying disk, vhd or ramdisk etc // [Read, Description("Logical block/sector size in bytes")] uint64 BlockSize; // // Flag indicating whether the device is based on the underlying storage redundancy // [Read, Description("Flag indicating whether the device is based on the underlying storage redundancy")] boolean IsBasedOnUnderlyingRedundancy; // // Deprecated. Redirect to CreateVhdWTDisk/CreateRamWTDisk/ImportVhdWTDisk // to create/import a fixed-VHDX-based or RAM-based WT_Disk. // [Implemented, Static, Description("Deprecated. Use CreateXXXWTDisk/ImportWTDisk instead.")] WT_Disk NewWTDisk( [IN, Description("Full Path To VHD File")] string DevicePath, [IN, Description("iSCSI Disk Friendly Description")] string Description, [IN, Optional, Description("Deprecated.")] boolean ClearPartTable, [IN, Description("iSCSI Disk Size (MB)")] uint32 SizeInMB ); // // Deprecated. Redirect to CreateVhdWTDisk/ImportVhdWTDisk to create/import // a differencing-VHDX-based WT_Disk. // [Implemented, Static, Description("Deprecated. Use CreateXXXWTDisk/ImportWTDisk instead.")] WT_Disk NewDiffWTDisk( [IN, Description("Full Path to VHD File")] string DevicePath, [IN, Description("Full Path to Parent VHD File")] string ParentPath, [IN, Description("iSCSI Disk Friendly Description")] string Description, [IN, Optional, Description("Deprecated.")] boolean CacheParent ); // // Create a new VHDX-based WT_Disk. // [Implemented, Static, Description("Create a new VHDX-based WT_Disk.")] WT_Disk CreateVhdWTDisk( [IN, Description("Full path to VHD file.")] string DevicePath, [IN, ValueMap {"2", "3", "4"}, Values {"Fixed", "Dynamic", "Differencing"}, Description("VHD type.")] uint16 VhdType, [IN, Description("The maximum size of the virtual hard disk as viewable by" " an initiator, in bytes. The specified size is rounded up" " based on the larger value of either logical or physical" " sector size.")] uint64 MaxInternalSize, [IN, Description("The block size in bytes used by the VHD.")] uint32 BlockSize, [IN, Description("The logical sector size in bytes used by the VHD.")] uint32 LogicalSectorSize, [IN, Description("The physical sector size in bytes used by the VHD.")] uint32 PhysicalSectorSize, [IN, Optional, Description("iSCSI disk description.")] string Description, [IN, Optional, Description("Whether to clear data upon fixed VHD creation")] boolean ClearData, [IN, Optional, Description("Full path to parent VHD file")] string ParentPath ); // // Create a new RAM-based WT_Disk, which is not persisted and cannot be used // in a failover cluster environment. // [Implemented, Static, Description("Create a new RAM-based WT_Disk, which is not persisted and" " cannot be used in a failover cluster environment.")] WT_Disk CreateRamWTDisk( [IN, Description("A decorated device path in the format of" " 'RAMDISK:<unique_id>'.")] string DevicePath, [IN, Description("The maximum size of the virtual hard disk as viewable by" " an initiator, in bytes. The specified size is rounded up" " based on the larger value of among logical, physical" " sector size and memory page size.")] uint64 MaxInternalSize, [IN, Description("The logical sector size in bytes used by the VHD.")] uint32 LogicalSectorSize, [IN, Description("The physical sector size in bytes used by the VHD.")] uint32 PhysicalSectorSize, [IN, Optional, Description("iSCSI disk description.")] string Description ); // // Import an existing VHD or SCSI device as a WT_Disk. // [Implemented, Static, Description("Import an existing VHD or SCSI device as a WT_Disk.")] WT_Disk ImportWTDisk( [IN, Description("Full path to an existing VHD file or a decorated path in" " the format of 'SCSI:<win32_device_path>' to a" " pass-through SCSI device.")] string DevicePath, [IN, Optional, Description("iSCSI disk description.")] string Description, [IN, Optional, Description("Cluster resource group name (only needed to" " import a SCSI device in a cluster).")] string ResourceGroup ); // // Extend this WTDisk. // [Implemented, Description("Deprecated. Use Resize instead.")] void Extend( [IN, Description("iSCSI Disk Additional Size (MB)")] uint32 AdditionalSizeInMB ); // // Resize this WTDisk. // [Implemented, Description("Resize iSCSI Disk. When Shrink parameter is TRUE, Resize will do reduction " "with reduction size DeltaInMB. When Shrink parameter is FALSE, Resize will do " "expansion with DeltaInMB as additional size. By default, Shrink is FALSE.")] void Resize( [IN, Description("iSCSI Disk Resize Delta (MB)")] uint32 DeltaInMB, [IN, Optional, Description("Whether to reduce or expand fixed VHD")] boolean Shrink ); // // Get this WTDisk Data View mount points. // [Implemented, Description("Deprecated")] sint32 GetDVMountPoints( [OUT, Description("String Array of Mount Points")] string MountPoints[] ); // // Get the last rollback progres information for this WT_Disk. // Rollback progress percentage indicate that update of the // progress of the rollback operation. The value is only valid when // RollbackLastError is ERROR_SUCCESS. At the start of the rollback // operation this value is set to zero and the Status is set to Reverting. // At completion of rollback operation, this value is set to 100 and Status // is either set to Ide or InUse. Caller can use the RollbackLastError // value to check if rollback completed successfully. // // Rollback last error. During rollback, when there is an error, the // error code is stored here. This value can be used to determine if // the RollbackProgress is valid, or to check the status of the rollback // operation after the initial rollback call is made. A RollbackProgress // value of 100 and RollbackLastError indicates that the rollback has // completed successfully. // [Implemented, Description("Deprecated. Use GetAsyncOperationProgress instead.")] void GetRollbackProgress( [OUT, Description("Progress percentage (0-100)")] uint32 ProgressPercent, [OUT, Description("Last error code of the rollback operation")] sint32 RollbackLastError ); // // Get the progress of async operation on this WT_Disk. // // ProgressPercentage indicate that update of the // progress of the async operation. The value is only valid when // LastError is ERROR_SUCCESS. At the start of the async // operation this value is set to zero and the Status is set to async operation. // At completion of async operation, this value is set to 100 and Status // is either set to Ide or InUse. Caller can use the back LastError // value to check if async operation completed successfully. // // LastError. During async operation, when there is an error, the // error code is stored here. This value can be used to determine if // the ProgressPercentage is valid, or to check the status of the async // operation after the initial async operation call is made. A ProgressPercentage // value of 100 and LastError indicates that the async operation has // completed successfully. // [Implemented, Description("Get the async operation progress information for this WT_Disk")] void GetAsyncOperationProgress( [OUT, Description("Progress percentage (0-100)")] uint32 ProgressPercent, [OUT, Description("Last error code of the async operation")] sint32 LastError ); // // Cancel any asychronous operation on this WT_Disk. // [Implemented, Description("Cancel any asychronous operation")] void CancelAsyncOperation(); }; // // Path to volumes mounted via Data View. // [ Dynamic, Provider("WinTargetProv"), Description("Deprecated") ] class WT_DVMountedPath { // // WTDisk index. // [Key, Read, Description("iSCSI Disk Index")] uint32 WTD; // // Mounted path. // [Read, Description("Mount Point")] string MountedPath; }; // // Snapshot class. // [ Dynamic, Provider("WinTargetProv"), Description("Class describing a snapshot of an iSCSI Disk. Use the " "Create() method to create a snapshot.") ] class WT_Snapshot { // // Snapshot ID. // [Key, Read, Description("Snapshot Identifier")] string Id; // // Snapshot description. // [Read, Write, Description("Snapshot Friendly Description")] string Description; // // The original WTD. // [Read, Description("Snapshot iSCSI Disk Index")] uint32 OrigWTD; // // Snapshot status. // Idle 0x00 // Exported 0x01 // DVMounted 0x02 // RollbackInProgress 0x04 // [Read, Description("Snapshot Status")] sint32 Status; // // The timestamp when the snapshot was taken. Displayed as local time. // [Read, Description("Snapshot Timestamp")] datetime TimeStamp; // // The WTD of the exported snapshot. // [Read, Description("Exported Snapshot iSCSI Disk Index")] sint32 ExportedWTD; // // VDS LUN Information // [ Read, Description("Vital Product Data identification information, formatted in a VDS friendly manner")] WT_VDSLunInformation VdsLunInfo; // // Resource group. // [Read, Description("Resource Group (only valid in a cluster)")] string ResourceGroup; // // Create snapshot. // [Implemented, Static, Description("Create Snapshot")] void Create( [IN, Description("iSCSI Disk Index")] uint32 WTD, [OUT, Description("Snapshot Identifier")] string Id ); // // Delete snapshot. // [Implemented, Description("Delete Snapshot")] void Delete(); // // Rollback WTD to this snapshot. // [Implemented, Description("Rollback iSCSI Disk Content to Snapshot")] void Rollback(); // // Abort snapshot rollback process. // [Implemented, Description("Abort Rollback")] void AbortRollback(); // // Export the snapshot. // [Implemented, Description("Export Snapshot as an iSCSI Disk")] void Export( [OUT, Description("Exported Snapshot iSCSI Disk Index")] uint32 WTD ); // // Mount this snapshot for read-only access. // [Implemented, Description("Deprecated. Use iSCSI loopback instead.")] void DVMount(); // // Dismount this snapshot. // [Implemented, Description("Deprecated. Use iSCSI loopback instead.")] void DVDismount(); }; [ Dynamic, Provider("WinTargetProv"), Description("Class providing helper methods for the hardware snapshot provider."), singleton ] class WT_SnapshotProviderHelper { // // Prepares the creation of a new WT_Snapshot. // [Implemented, Static, Description("Prepares the creation of a new WT_Snapshot")] string PrepareCreate( [IN, Description("Virtual Disk identifier")] uint32 WTD, [IN, Description("Snapshot Set context")] uint32 Context, [IN, Description("Snapshot Set identifier")] string SnapshotSetId ); // // Begin the Snapshot creation process. // [Implemented, Static, Description("Begin the snapshot set creation")] void DoCreate( [IN, Description("Snapshot Set identifier")] string SnapshotSetId ); // // Wait for snapshots commit. // [Implemented, Static, Description("Wait for snapshots commit to complete")] void WaitCommitCompleted( [IN, Description("Snapshot Set identifier")] string SnapshotSetId ); // // End the Snapshot creation process. // [Implemented, Static, Description("End snapshot creation.")] void DoEnd( [IN, Description("Snapshot Set identifier")] string SnapshotSetId ); // // PreFinal event post snapshot commit. // [Implemented, Static, Description("PreFinal event post snapshot commit.")] void DoPreFinal( [IN, Description("Snapshot Set identifier")] string SnapshotSetId ); // // PostFinal event post snapshot commit. // [Implemented, Static, Description("PostFinal event post snapshot commit.")] void DoPostFinal( [IN, Description("Snapshot Set identifier")] string SnapshotSetId ); // // Abort snapshot creation. // [Implemented, Static, Description("Abort snapshot creation.")] void DoAbort( [IN, Description("Snapshot Set identifier")] string SnapshotSetId ); }; // // Portal class. // [ Dynamic, Provider("WinTargetProv"), Description("Class describing a TCP/IP port used for iSCSI traffic.") ] class WT_Portal { // // IP address. // [Key, Read, Description("TCP/IP Address")] string Address; // // TCP port. // [Read, Write, Description("TCP/IP Port")] uint32 Port; // // Flag indicating if WinTarget uses this adapter for iSCSI traffic. // [Read, Write, Description("Listen For iSCSI Traffic")] boolean Listen; // // VDS identification Guid // [Read, Description("Unique identifier of the VirtualDisk for VDS consumption")] string Guid; }; // // WinTarget cached initiator info class. // [ Dynamic, Provider("WinTargetProv"), Description("Class describing an initiator that the target has cached. " "The target caches initiators that have logged into the target, " "manually typed in by the user, or are queried from an iSNS " "server. Initiators that have not logged into the target " "seven (7) days are removed from the cache unless that " "initiator exists in an iSNS server.") ] class WT_CachedInitiatorInfo { // // The IQN name of the initiator. // [Key, Read, Description("Initiator IQN")] string Name; }; // // WinTarget general information class. // [ Dynamic, Provider("WinTargetProv"), Description("Class describing general Microsoft iSCSI Target information."), singleton ] class WT_General { // // Version. // [Read, Description("Version")] string Version; // // Cluster -vs- Standalone // [Read, Description("Standalone or Clustered configuration")] boolean IsClustered; // // Identification Guid used by VDS // [Read, Description("Unique identifier of this installation of the iSCSI Target")] string Guid; // // Friendly Name. // [Read, Write, Description("Name")] string Name; // // Minimum version of iSCSI standard. // [Read, Description("Minimum version number of the iSCSI specification supported")] uint8 MinVersionSupported; // // Maximum version of iSCSI standard. // [Read, Description("Maximum version number of the iSCSI specification supported")] uint8 MaxVersionSupported; // // Authentication methods supported. // [Read, Values{"None", "SRP", "CHAP", "Kerberos"}, ValueMap{"2", "3", "4", "5"}, Description("Authentication methods supported")] uint16 AuthenticationMethodsSupported[]; // // Whether Microsoft iSCSI Target can be managed remotely. // [Read, Write, Description("Whether Microsoft iSCSI Target can be managed remotely.")] boolean IsRemoteManageable; }; // // WinTarget volumes. Only reports volumes suitable for VHD usable by WinTarget // [ description( "The WT_Volume class represents an area of storage on a hard disk. " "The class returns local volumes that are suitable to host WT_Disk."), Dynamic : ToInstance, Provider("WinTargetProv") ] class WT_Volume { [ Key : ToInstance ToSubclass DisableOverride, Read : ToSubclass, Description("The DeviceID property contains a string uniquely identifying the volume on the system.") : Amended ToSubclass ] string DeviceID; // // Resource group. // [Read : ToSubclass, Description("Resource Group (only valid in a cluster)")] string ResourceGroup; // // Volume's first mount point // [Read, Description("Volume's first mount point")] string MountPoint; // // File system name of this volume // [Read, Description("File system name")] string FileSystem; // // Flag to tell whether the volume is on a dynamic disk or not // [Read, Description("Flag indicating if the volume is on a dynamic disk")] boolean IsOnDynamicDisk; // // Total size of the volume // [Read, Description("Total volume size")] uint64 TotalSize; // // Total size of the volume // [Read, Description("Remaining volume size")] uint64 RemainingSize; };