//***************************************************************************
//
// 
//  Module: iScsi Discovery api
//
//  Purpose: 
//
//  Copyright (c) 2001 Microsoft Corporation
//
//***************************************************************************

#pragma autorecover
#pragma namespace("\\\\.\\Root\\WMI")
instance of __namespace{ name="ms_809";};
#pragma namespace("\\\\.\\Root\\WMI\\ms_809")

[Description("Microsoft iSCSI Initiator: Portal") : Amended,AMENDMENT, LOCALE(0x0809)] 
class MSiSCSIInitiator_Portal
{
  [key,Description("Index number of this portal") : Amended] uint32 Index;
  [Description("Portal Symbolic Name") : Amended] string SymbolicName;
  [Description("Portal Address") : Amended] string Address;
  [Description("Portal Port") : Amended] uint16 Port;
};

[Description("Microsoft iSCSI Initiator: Portal Group") : Amended,AMENDMENT, LOCALE(0x0809)] 
class MSiSCSIInitiator_PortalGroup
{
  [key,Description("Index number of this portal group") : Amended] uint32 Index;
  [Description("List of Portals in this Portal Group") : Amended] MSiSCSIInitiator_Portal Portals[];
};

[Description("Microsoft iSCSI Initiator: Target Address") : Amended,AMENDMENT, LOCALE(0x0809)] 
class MSiSCSIInitiator_TargetAddress
{
  [Description("OS Device Name") : Amended] string OSDeviceName;
  [Description("OS SCSI bus number target is mapped to") : Amended] uint32 OSBusNumber;
  [Description("OS SCSI Target number target is mapped to") : Amended] uint32 OSTargetNumber;
  [Description("OS SCSI LUN number target LUN is mapped to") : Amended] uint32 OSLunNumber;
};

[Description("Microsoft iSCSI Initiator: LUN List") : Amended,AMENDMENT, LOCALE(0x0809)] 
class MSiSCSIInitiator_LUNList
{
  [Description("OS SCSI LUN number target LUN is mapped to") : Amended] uint32 OSLunNumber;
  [Description("Target LUN") : Amended] uint64 TargetLun;
};

[Description("Microsoft iSCSI Initiator: Target Mappings") : Amended,AMENDMENT, LOCALE(0x0809)] 
class MSiSCSIInitiator_TargetMappings
{
  [Description("Initiator Name") : Amended] string InitiatorName;
  [Description("Target Name") : Amended] string TargetName;
  [Description("OS Device Name") : Amended] string OSDeviceName;
  [Description("OS SCSI bus number target is mapped to") : Amended] uint32 OSBusNumber;
  [Description("OS SCSI Target number target is mapped to") : Amended] uint32 OSTargetNumber;
  [Description("LUN List") : Amended] MSiSCSIInitiator_LUNList LUNList[];
};

[Description("Microsoft iSCSI Initiator: Target Login Options") : Amended,AMENDMENT, LOCALE(0x0809)] 
class MSiSCSIInitiator_TargetLoginOptions
{
  [Description("ISCSI Login Options Version") : Amended] uint32 Version;
  [Description("Bit field indicating which information is specified") : Amended] uint32 InformationSpecified;
  [Description("Flags that affect how login occurs") : Amended] uint32 LoginFlags;
  [Description("Flags to indicate login authentication type") : Amended,Values{"No Authentication", "CHAP", "Mutual CHAP"} : Amended] uint32 AuthType;
  [Description("Cyclic integrity checksums that can be negotiated for the header digests") : Amended] uint32 HeaderDigest;
  [Description("Cyclic integrity checksums that can be negotiated for the data digests") : Amended] uint32 DataDigest;
  [Description("Maximum number of connections, 0 implies no limit") : Amended] uint32 MaximumConnections;
  [Description("The initiator and target negotiate the minimum time, in seconds, to wait before attempting an explicit/implicit logout or active task reassignment after an unexpected connection termination or a connection reset.") : Amended] uint32 DefaultTime2Wait;
  [Description(" The initiator and target negotiate the maximum time, in seconds after an initial wait (Time2Wait), before which an explicit/implicit connection Logout or active task reassignment is still possible after an unexpected connection termination or a connection reset.") : Amended] uint32 DefaultTime2Retain;
  [Description("Username for iSCSI authentication") : Amended] uint8 Username[];
  [Description("Password for iSCSI authentication") : Amended] uint8 Password[];
};

[Description("Microsoft iSCSI Initiator: Connection Information") : Amended,AMENDMENT, LOCALE(0x0809)] 
class MSiSCSIInitiator_ConnectionInformation
{
  [Description("Connection ID string") : Amended] string ConnectionID;
  [Description("Initiator Address") : Amended] string InitiatorAddress;
  [Description("Target Address") : Amended] string TargetAddress;
  [Description("Initiator Port") : Amended] uint16 InitiatorPort;
  [Description("Target Port") : Amended] uint16 TargetPort;
  [Description("Connection ID token") : Amended] uint8 CID[];
};

[Description("Microsoft iSCSI Initiator: IKE Preshared Key Authentication Information") : Amended,AMENDMENT, LOCALE(0x0809)] 
class MSiSCSIInitiator_IKEPresharedKeyAuthenticationInfo
{
  [Description("Authentication Method: Preshared Key") : Amended] uint32 AuthMethod;
  [Description("Security Flags") : Amended] uint64 SecurityFlags;
  [Description("IKE Identification Payload Type") : Amended] uint32 IdType;
  [Description("ID") : Amended] uint8 Id[];
  [Description("Key") : Amended] uint8 Key[];
};

[Description("Microsoft iSCSI Initiator: Target Class") : Amended ToSubclass,AMENDMENT, LOCALE(0x0809)] 
class MSiSCSIInitiator_TargetClass
{
  [key : ToSubclass,Description("Target Name") : Amended ToSubclass] string TargetName;
  [key : ToSubclass,Description("Discovery Mechanism") : Amended ToSubclass] string DiscoveryMechanism;
  [Description("Initiator Name") : Amended ToSubclass] string InitiatorName;
  [Description("Protocol Type") : Amended ToSubclass] uint32 ProtocolType;
  [Description("Target Alias") : Amended ToSubclass] string TargetAlias;
  [Description("Portal Groups") : Amended ToSubclass] MSiSCSIInitiator_PortalGroup PortalGroups[];
  [Description("Mappings") : Amended ToSubclass] MSiSCSIInitiator_TargetMappings Mappings;
  [Description("Target Flags") : Amended ToSubclass] uint32 TargetFlags;
  [Description("Login Options") : Amended ToSubclass] MSiSCSIInitiator_TargetLoginOptions LoginOptions;
  [Description("Login to this target") : Amended ToInstance ToSubclass] uint32 Login([in,Description("Indicates whether this is informational session") : Amended] boolean IsInformationalSession,[in,Description("Initiator Port Number") : Amended] uint32 InitiatorPortNumber,[in,Description("Target Portal") : Amended] MSiSCSIInitiator_Portal TargetPortal,[in,Description("Security Flags") : Amended] uint64 SecurityFlags,[in,Description("Mappings") : Amended] MSiSCSIInitiator_TargetMappings Mappings[],[in,Description("Login Options") : Amended] MSiSCSIInitiator_TargetLoginOptions LoginOptions,[in,Description("Key") : Amended] uint8 Key[],[in,Description("IsPersistent") : Amended] boolean IsPersistent,[out,Description("Unique Session ID") : Amended] string UniqueSessionId,[out,Description("Unique Connection ID") : Amended] string UniqueConnectionId);
};

[Description("Microsoft iSCSI Initiator: Persistent Login Class") : Amended,AMENDMENT, LOCALE(0x0809)] 
class MSiSCSIInitiator_PersistentLoginClass
{
  [key,Description("Target Name") : Amended] string TargetName;
  [Description("Indicates whether this is informational session") : Amended] boolean IsInformationalSession;
  [Description("Initiator Instance") : Amended] string InitiatorInstance;
  [Description("Initiator Port Number") : Amended] uint32 InitiatorPortNumber;
  [Description("Target Portal") : Amended] MSiSCSIInitiator_Portal TargetPortal;
  [Description("Security Flags") : Amended] uint64 SecurityFlags;
  [Description("Mappings") : Amended] MSiSCSIInitiator_TargetMappings Mappings;
  [Description("Login Options") : Amended] MSiSCSIInitiator_TargetLoginOptions LoginOptions;
};

[Description("Microsoft iSCSI Initiator: iSNS Server Class") : Amended ToSubclass,AMENDMENT, LOCALE(0x0809)] 
class MSiSCSIInitiator_iSNSServerClass
{
  [key : ToSubclass,Description("iSNS Server Address") : Amended ToSubclass] string iSNSServerAddress;
  [Description("Refresh the list of discovered targets from this iSNS server") : Amended ToInstance ToSubclass] uint32 Refresh();
};

[Description("Microsoft iSCSI Initiator: Send Target Portal Class") : Amended ToSubclass,AMENDMENT, LOCALE(0x0809)] 
class MSiSCSIInitiator_SendTargetPortalClass
{
  [key : ToSubclass,Description("Portal Identifier String") : Amended ToSubclass] string PortalIdentifierString;
  [Description("Initiator Instance or Name") : Amended ToSubclass] string InitiatorName;
  [Description("Initiator Port Number") : Amended ToSubclass] uint32 InitiatorPortNumber;
  [Description("Portal Symbolic Name") : Amended ToSubclass] string PortalSymbolicName;
  [Description("Portal Address") : Amended ToSubclass] string PortalAddress;
  [Description("Portal Port") : Amended ToSubclass] uint16 PortalPort;
  [Description("Login Options") : Amended ToSubclass] MSiSCSIInitiator_TargetLoginOptions LoginOptions;
  [Description("Security Flags") : Amended ToSubclass] uint64 SecurityFlags;
  [Description("Refresh the list of discovered targets from this Send Targets portal") : Amended ToInstance ToSubclass] uint32 Refresh();
};

[Description("Microsoft iSCSI Initiator: Initiator Class") : Amended ToSubclass,AMENDMENT, LOCALE(0x0809)] 
class MSiSCSIInitiator_InitiatorClass
{
  [key : ToSubclass,Description("Initiator Name") : Amended ToSubclass] string InitiatorName;
};

[Description("Microsoft iSCSI Initiator: Device attached to a session") : Amended,AMENDMENT, LOCALE(0x0809)] 
class MSiSCSIInitiator_DeviceOnSession
{
};

[Description("Microsoft iSCSI Initiator: Session Class") : Amended,AMENDMENT, LOCALE(0x0809)] 
class MSiSCSIInitiator_SessionClass
{
  [key,Description("Session ID") : Amended] string SessionId;
  [Description("Initiator Name") : Amended] string InitiatorName;
  [Description("Target Node Name") : Amended] string TargetNodeName;
  [Description("Target Name") : Amended] string TargetName;
  [Description("Initiator Specific ID") : Amended] uint8 ISID[];
  [Description("Target Specific ID") : Amended] uint8 TSID[];
  [Description("Logout from the iSCSI Target in this session") : Amended] uint32 Logout();
  [Description("Send SCSI Inquiry command") : Amended] uint32 SendScsiInquiry([in,Description("LUN") : Amended] uint64 Lun,[in,Description("EvpdCmddt") : Amended] uint8 EvpdCmddt,[in,Description("Page Code") : Amended] uint8 PageCode,[out,Description("SCSI Status") : Amended] uint8 ScsiStatus,[out,Description("Response Buffer") : Amended] uint8 ResponseBuffer[],[out,Description("Sense Buffer") : Amended] uint8 SenseBuffer[]);
  [Description("Send SCSI Read Capacity command") : Amended] uint32 SendScsiReadCapacity([in,Description("LUN") : Amended] uint64 Lun,[out,Description("SCSI Status") : Amended] uint8 ScsiStatus,[out,Description("Response Buffer") : Amended] uint8 ResponseBuffer[],[out,Description("Sense Buffer") : Amended] uint8 SenseBuffer[]);
  [Description("Send SCSI Report LUNs command") : Amended] uint32 SendScsiReportLuns([out,Description("SCSI Status") : Amended] uint8 ScsiStatus,[out,Description("Response Buffer") : Amended] uint8 ResponseBuffer[],[out,Description("Sense Buffer") : Amended] uint8 SenseBuffer[]);
  [Description("Add a connection to the session") : Amended ToInstance ToSubclass] uint32 AddConnection([in,Description("Initiator Port Number") : Amended] uint32 InitiatorPortNumber,[in,Description("Target Portal") : Amended] MSiSCSIInitiator_Portal TargetPortal,[in,Description("Security Flags") : Amended] uint64 SecurityFlags,[in,Description("Login Options") : Amended] MSiSCSIInitiator_TargetLoginOptions LoginOptions,[in,Description("Key") : Amended] uint8 Key[],[out,Description("Unique Connection ID") : Amended] string UniqueConnectionId);
  [Description("Remove a connection from the session") : Amended ToInstance ToSubclass] uint32 RemoveConnection([in,Description("Unique Connection ID") : Amended] string UniqueConnectionId);
};

#pragma deleteclass("MSiSCSIInitiator_MethodClass",NOFAIL)

[Description("Microsoft iSCSI Initiator: Method Class") : Amended,AMENDMENT, LOCALE(0x0809)] 
class MSiSCSIInitiator_MethodClass
{
  [Description("iSCSI Initiator Node Name") : Amended] string iSCSINodeName;
  [Description("Refresh the entire list of targets using all available discovery methods") : Amended ToInstance ToSubclass] uint32 RefreshTargetList();
  [Description("Set iSCSI Tunnel Mode Outer Address") : Amended] uint32 SetIScsiTunnelModeOuterAddress([in,Description("Initiator Name") : Amended] string InitiatorName,[in,Description("Initiator Port Number") : Amended] uint32 InitiatorPortNumber,[in,Description("Destination Address") : Amended] string DestinationAddress,[in,Description("Outer Mode Address") : Amended] string OuterModeAddress,[in,Description("Indicates whether to persist") : Amended] boolean Persist);
  [Description("Set iSCSI IKE Information") : Amended] uint32 SetIScsiIKEInfo([in,Description("Initiator Name") : Amended] string InitiatorName,[in,Description("Initiator Port Number") : Amended] uint32 InitiatorPortNumber,[in,Description("IKE Authentication Information") : Amended] MSiSCSIInitiator_IKEPresharedKeyAuthenticationInfo AuthInfo,[in,Description("Indicates whether to persist") : Amended] boolean Persist);
  [Description("Set iSCSI Group Preshared Key") : Amended] uint32 SetIScsiGroupPresharedKey([in,Description("Key") : Amended] uint8 Key[],[in,Description("Indicates whether to persist") : Amended] boolean Persist);
  [Description("Set iSCSI CHAP Shared Secret") : Amended] uint32 SetIScsiInitiatorCHAPSharedSecret([in,Description("Shared Secret") : Amended] uint8 SharedSecret[]);
  [Description("Set iSCSI RADIUS Shared Secret") : Amended] uint32 SetIScsiInitiatorRADIUSSharedSecret([in,Description("Shared Secret") : Amended] uint8 SharedSecret[]);
  [Description("Set iSCSI Initiator Node Name") : Amended] uint32 SetIScsiInitiatorNodeName([in,Description("Initiator Node Name") : Amended] string InitiatorNodeName);
  [Description("Setup Persistent iSCSI Volumes") : Amended] uint32 SetupPersistentIScsiVolumes();
  [Description("Clear Persistent iSCSI Volumes") : Amended] uint32 ClearPersistentIScsiVolumes();
};

[Description("Microsoft iSCSI Initiator: Persistent Devices") : Amended,AMENDMENT, LOCALE(0x0809)] 
class MSiSCSIInitiator_PersistentDevices
{
  [key,Description("DevicePath") : Amended] string DevicePath;
};
