Windows2003-3790/public/internal/drivers/inc/hbaapi.h
2020-09-30 16:53:55 +02:00

739 lines
23 KiB
C

//***************************************************************************
//
// hbaapi.h
//
// Module: Windows HBA API implmentation
//
// This header is consistent with HBA_API_Rev_2-14_2001NOV13.doc
// version of the HBAAPI 2.0 spec.
//
// Purpose: Contains HBA api header
//
// Copyright (c) 2001 Microsoft Corporation
//
//***************************************************************************
#ifndef HBAAPI_H
#define HBAAPI_H
#include <time.h>
#ifdef _HBAAPIP_
#define HBA_API __cdecl
#else
#define HBA_API DECLSPEC_IMPORT __cdecl
#endif
#define HBA_VERSION 2
typedef ULONGLONG HBA_UINT64;
typedef LONGLONG HBA_INT64;
typedef ULONG HBA_UINT32;
typedef USHORT HBA_UINT16;
typedef UCHAR HBA_UINT8;
typedef SCHAR HBA_INT8;
typedef HBA_UINT32 HBA_HANDLE;
typedef HBA_UINT32 HBA_STATUS;
#define HBA_STATUS_OK 0
#define HBA_STATUS_ERROR 1 /* Error */
#define HBA_STATUS_ERROR_NOT_SUPPORTED 2 /* Function not supported.*/
#define HBA_STATUS_ERROR_INVALID_HANDLE 3 /* invalid handle */
#define HBA_STATUS_ERROR_ARG 4 /* Bad argument */
#define HBA_STATUS_ERROR_ILLEGAL_WWN 5 /* WWN not recognized */
#define HBA_STATUS_ERROR_ILLEGAL_INDEX 6 /* Index not recognized */
#define HBA_STATUS_ERROR_MORE_DATA 7 /* Larger buffer required */
#define HBA_STATUS_ERROR_STALE_DATA 8 /* Information has changed since the last call to HBA_RefreshInformation */
#define HBA_STATUS_SCSI_CHECK_CONDITION 9 /* SCSI Check Condition reported*/
#define HBA_STATUS_ERROR_BUSY 10 /* Adapter busy or reserved, retry may be effective*/
#define HBA_STATUS_ERROR_TRY_AGAIN 11 /* Request timed out, retry may be effective */
#define HBA_STATUS_ERROR_UNAVAILABLE 12 /* Referenced HBA has been removed or deactivated */
#define HBA_STATUS_ERROR_ELS_REJECT 13 /* The requested ELS was rejected */
/* by the local adapter */
#define HBA_STATUS_ERROR_INVALID_LUN 14 /* The specified LUN is not provided */
/* by the specified adapter */
#define HBA_STATUS_ERROR_INCOMPATIBLE 15 /* An incompatibility has been detected*/
/* among the library and driver modules invoked */
/* which will cause one or more functions in the highest version that all support */
/* to operate incorrectly. */
/* The differing function sets of software modules implementing different versions */
/* of the HBA API specification does not in itself constitute an incompatibility. */
/* Known interoperability bugs among supposedly compatible versions */
/* should be reported as incompatibilities, */
/* but not all such interoperability bugs may be known. */
/* This value may be returned by any function which calls a Vendor Specific Library, */
/* and by HBA_LoadLibrary and HBA_GetAdapterName. */
#define HBA_STATUS_ERROR_AMBIGUOUS_WWN 16 /* Multiple adapters have */
/* a matching WWN.
* This could occur if the NodeWWN of multiple adapters is identical. */
#define HBA_STATUS_ERROR_LOCAL_BUS 17 /* A persistent binding request included a bad local SCSI bus number */
#define HBA_STATUS_ERROR_LOCAL_TARGET 18 /* A persistent binding request included a bad local SCSI target number */
#define HBA_STATUS_ERROR_LOCAL_LUN 19 /* A persistent binding request included a bad local SCSI logical unit number */
#define HBA_STATUS_ERROR_LOCAL_SCSIID_BOUND 20 /* A persistent binding set request included */
/* a local SCSI ID that was already bound */
#define HBA_STATUS_ERROR_TARGET_FCID 21 /* A persistent binding request included a bad or unlocatable FCP Target FCID */
#define HBA_STATUS_ERROR_TARGET_NODE_WWN 22 /* A persistent binding request included a bad FCP Target Node WWN */
#define HBA_STATUS_ERROR_TARGET_PORT_WWN 23 /* A persistent binding request included a bad FCP Target Port WWN */
#define HBA_STATUS_ERROR_TARGET_LUN 24 /* A persistent binding request included */
/* an FCP Logical Unit Number not defined by the identified Target*/
#define HBA_STATUS_ERROR_TARGET_LUID 25 /* A persistent binding request included */
/* an undefined or otherwise inaccessible Logical Unit Unique Identifier */
#define HBA_STATUS_ERROR_NO_SUCH_BINDING 26 /* A persistent binding remove request included */
/* a binding which did not match a binding established by the specified port */
#define HBA_STATUS_ERROR_NOT_A_TARGET 27 /* A SCSI command was requested to an Nx_Port that was not a SCSI Target Port */
#define HBA_STATUS_ERROR_UNSUPPORTED_FC4 28 /* A request was made concerning an unsupported FC-4 protocol */
#define HBA_STATUS_ERROR_INCAPABLE 29 /* A request was made to enable unimplemented capabilities for a port */
typedef HBA_UINT8 HBA_BOOLEAN; /* Use this for a single true/false flag */
typedef HBA_UINT32 HBA_PORTTYPE;
#define HBA_PORTTYPE_UNKNOWN 1 /* Unknown */
#define HBA_PORTTYPE_OTHER 2 /* Other */
#define HBA_PORTTYPE_NOTPRESENT 3 /* Not present */
#define HBA_PORTTYPE_NPORT 5 /* Fabric */
#define HBA_PORTTYPE_NLPORT 6 /* Public Loop */
#define HBA_PORTTYPE_FLPORT 7 /* Fabric on a Loop */
#define HBA_PORTTYPE_FPORT 8 /* Fabric Port */
#define HBA_PORTTYPE_EPORT 9 /* Fabric expansion port */
#define HBA_PORTTYPE_GPORT 10 /* Generic Fabric Port */
#define HBA_PORTTYPE_LPORT 20 /* Private Loop */
#define HBA_PORTTYPE_PTP 21 /* Point to Point */
typedef HBA_UINT32 HBA_PORTSTATE;
#define HBA_PORTSTATE_UNKNOWN 1 /* Unknown */
#define HBA_PORTSTATE_ONLINE 2 /* Operational */
#define HBA_PORTSTATE_OFFLINE 3 /* User Offline */
#define HBA_PORTSTATE_BYPASSED 4 /* Bypassed */
#define HBA_PORTSTATE_DIAGNOSTICS 5 /* In diagnostics mode */
#define HBA_PORTSTATE_LINKDOWN 6 /* Link Down */
#define HBA_PORTSTATE_ERROR 7 /* Port Error */
#define HBA_PORTSTATE_LOOPBACK 8 /* Loopback */
typedef HBA_UINT32 HBA_PORTSPEED;
#define HBA_PORTSPEED_UNKNOWN 0 /* Unknown - transceiver incapable of reporting */
#define HBA_PORTSPEED_1GBIT 1 /* 1 GBit/sec */
#define HBA_PORTSPEED_2GBIT 2 /* 2 GBit/sec */
#define HBA_PORTSPEED_10GBIT 4 /* 10 GBit/sec */
#define HBA_PORTSPEED_4GBIT 8 /* 4 GBit/sec */
#define HBA_PORTSPEED_NOT_NEGOTIATED (1 << 15) /* Speed not established */
typedef HBA_UINT32 HBA_COS;
typedef struct HBA_fc4types {
HBA_UINT8 bits[32]; /* 32 bytes of FC-4 per GS-2 */
} HBA_FC4TYPES, *PHBA_FC4TYPES;
typedef struct HBA_wwn {
HBA_UINT8 wwn[8];
} HBA_WWN, *PHBA_WWN;
typedef struct HBA_ipaddress {
int ipversion; // see enumerations in RNID
union
{
unsigned char ipv4address[4];
unsigned char ipv6address[16];
} ipaddress;
} HBA_IPADDRESS, *PHBA_IPADDRESS;
typedef struct HBA_AdapterAttributes {
char Manufacturer[64]; /*Emulex */
char SerialNumber[64]; /* A12345 */
char Model[256]; /* QLA2200 */
char ModelDescription[256]; /* Agilent TachLite */
HBA_WWN NodeWWN;
char NodeSymbolicName[256]; /* From GS-2 */
char HardwareVersion[256]; /* Vendor use */
char DriverVersion[256]; /* Vendor use */
char OptionROMVersion[256]; /* Vendor use - i.e. hardware boot ROM*/
char FirmwareVersion[256]; /* Vendor use */
HBA_UINT32 VendorSpecificID; /* Vendor specific */
HBA_UINT32 NumberOfPorts;
char DriverName[256]; /* Binary path and/or name of driver file. */
} HBA_ADAPTERATTRIBUTES, *PHBA_ADAPTERATTRIBUTES;
typedef struct HBA_PortAttributes {
HBA_WWN NodeWWN;
HBA_WWN PortWWN;
HBA_UINT32 PortFcId;
HBA_PORTTYPE PortType; /*PTP, Fabric, etc. */
HBA_PORTSTATE PortState;
HBA_COS PortSupportedClassofService;
HBA_FC4TYPES PortSupportedFc4Types;
HBA_FC4TYPES PortActiveFc4Types;
char PortSymbolicName[256];
char OSDeviceName[256]; /* \device\ScsiPort3 */
HBA_PORTSPEED PortSupportedSpeed;
HBA_PORTSPEED PortSpeed;
HBA_UINT32 PortMaxFrameSize;
HBA_WWN FabricName;
HBA_UINT32 NumberofDiscoveredPorts;
} HBA_PORTATTRIBUTES, *PHBA_PORTATTRIBUTES;
typedef struct HBA_PortStatistics {
HBA_INT64 SecondsSinceLastReset;
HBA_INT64 TxFrames;
HBA_INT64 TxWords;
HBA_INT64 RxFrames;
HBA_INT64 RxWords;
HBA_INT64 LIPCount;
HBA_INT64 NOSCount;
HBA_INT64 ErrorFrames;
HBA_INT64 DumpedFrames;
HBA_INT64 LinkFailureCount;
HBA_INT64 LossOfSyncCount;
HBA_INT64 LossOfSignalCount;
HBA_INT64 PrimitiveSeqProtocolErrCount;
HBA_INT64 InvalidTxWordCount;
HBA_INT64 InvalidCRCCount;
} HBA_PORTSTATISTICS, *PHBA_PORTSTATISTICS;
/* HBA_FCPBINDINGTYPE was used in Rev 1.0. Add TO_OTHER for older calls to
indicate other binding types for HBA_GetPersistentBinding. To support
multiple types a new flag has been created to allow for multiple bindings
supported */
typedef enum HBA_fcpbindingtype { TO_D_ID, TO_WWN, TO_OTHER } HBA_FCPBINDINGTYPE;
/* A bit mask of Rev 2.0 persistent binding capabilities */
typedef HBA_UINT32 HBA_BIND_CAPABILITY;
/* The following are bit flags indicating persistent binding capabilities */
#define HBA_CAN_BIND_TO_D_ID 0x0001
#define HBA_CAN_BIND_TO_WWPN 0x0002
#define HBA_CAN_BIND_TO_WWNN 0x0004
#define HBA_CAN_BIND_TO_LUID 0x0008
#define HBA_CAN_BIND_ANY_LUNS 0x0400
#define HBA_CAN_BIND_TARGETS 0x0800
#define HBA_CAN_BIND_AUTOMAP 0x1000
#define HBA_CAN_BIND_CONFIGURED 0x2000
/* A bit mask of Rev 2.0 persistent binding setting types */
typedef HBA_UINT32 HBA_BIND_TYPE;
/* The following are bit flags indicating persistent binding setting types */
#define HBA_BIND_TO_D_ID 0x0001
#define HBA_BIND_TO_WWPN 0x0002
#define HBA_BIND_TO_WWNN 0x0004
#define HBA_BIND_TO_LUID 0x0008
#define HBA_BIND_TARGETS 0x0800
typedef struct HBA_LUID {
char buffer[256];
} HBA_LUID, *PHBA_LUID;
typedef struct HBA_ScsiId {
char OSDeviceName[256]; /* \device\ScsiPort3 */
HBA_UINT32 ScsiBusNumber; /* Bus on the HBA */
HBA_UINT32 ScsiTargetNumber; /* SCSI Target ID to OS */
HBA_UINT32 ScsiOSLun;
} HBA_SCSIID, *PHBA_SCSIID;
typedef struct HBA_FcpId {
HBA_UINT32 FcId;
HBA_WWN NodeWWN;
HBA_WWN PortWWN;
HBA_UINT64 FcpLun;
} HBA_FCPID, *PHBA_FCPID;
typedef struct HBA_FcpScsiEntry {
HBA_SCSIID ScsiId;
HBA_FCPID FcpId;
} HBA_FCPSCSIENTRY, *PHBA_FCPSCSIENTRY;
typedef struct HBA_FcpScsiEntry2 {
HBA_SCSIID ScsiId;
HBA_FCPID FcpId;
HBA_LUID Luid;
} HBA_FCPSCSIENTRY2, *PHBA_FCPSCSIENTRY2;
typedef struct HBA_FCPTargetMapping {
HBA_UINT32 NumberOfEntries;
HBA_FCPSCSIENTRY entry[1]; /* Variable length array containing mappings*/
} HBA_FCPTARGETMAPPING, *PHBA_FCPTARGETMAPPING;
typedef struct HBA_FCPTargetMapping2 {
HBA_UINT32 NumberOfEntries;
HBA_FCPSCSIENTRY2 entry[1]; /* Variable length array containing mappings*/
} HBA_FCPTARGETMAPPING2, *PHBA_FCPTARGETMAPPING2;
typedef struct HBA_FCPBindingEntry {
HBA_FCPBINDINGTYPE type;
HBA_SCSIID ScsiId;
HBA_FCPID FcpId;
HBA_UINT32 FcId;
} HBA_FCPBINDINGENTRY, *PHBA_FCPBINDINGENTRY;
typedef struct HBA_FCPBinding {
HBA_UINT32 NumberOfEntries;
HBA_FCPBINDINGENTRY entry[1]; /* Variable length array */
} HBA_FCPBINDING, *PHBA_FCPBINDING;
typedef struct HBA_FCPBindingEntry2 {
HBA_BIND_TYPE type;
HBA_SCSIID ScsiId;
HBA_FCPID FcpId;
HBA_LUID Luid;
HBA_STATUS Status;
} HBA_FCPBINDINGENTRY2, *PHBA_FCPBINDINGENTRY2;
typedef struct HBA_FCPBinding2 {
HBA_UINT32 NumberOfEntries;
HBA_FCPBINDINGENTRY2 entry[1]; /* Variable length array */
} HBA_FCPBINDING2, *PHBA_FCPBINDING2;
typedef enum HBA_wwntype { NODE_WWN, PORT_WWN } HBA_WWNTYPE;
typedef struct HBA_MgmtInfo {
HBA_WWN wwn;
HBA_UINT32 unittype;
HBA_UINT32 PortId;
HBA_UINT32 NumberOfAttachedNodes;
HBA_UINT16 IPVersion;
HBA_UINT16 UDPPort;
HBA_UINT8 IPAddress[16];
HBA_UINT16 reserved;
HBA_UINT16 TopologyDiscoveryFlags;
} HBA_MGMTINFO, *PHBA_MGMTINFO;
#define HBA_EVENT_LIP_OCCURRED 1
#define HBA_EVENT_LINK_UP 2
#define HBA_EVENT_LINK_DOWN 3
#define HBA_EVENT_LIP_RESET_OCCURRED 4
#define HBA_EVENT_RSCN 5
#define HBA_EVENT_PROPRIETARY 0xFFFF
typedef struct HBA_Link_EventInfo {
HBA_UINT32 PortFcId; /* Port which this event occurred */
HBA_UINT32 Reserved[3];
} HBA_LINK_EVENTINFO, *PHBA_LINK_EVENTINFO;
typedef struct HBA_RSCN_EventInfo {
HBA_UINT32 PortFcId; /* Port which this event occurred */
HBA_UINT32 NPortPage; /* Reference FC-FS for RSCN ELS "Affected N-Port Pages"*/
HBA_UINT32 Reserved[2];
} HBA_RSCN_EVENTINFO, *PHBA_RSCN_EVENTINFO;
typedef struct HBA_Pty_EventInfo {
HBA_UINT32 PtyData[4]; /* Proprietary data */
} HBA_PTY_EVENTINFO, *PHBA_PTY_EVENTINFO;
typedef struct HBA_EventInfo {
HBA_UINT32 EventCode;
union {
HBA_LINK_EVENTINFO Link_EventInfo;
HBA_RSCN_EVENTINFO RSCN_EventInfo;
HBA_PTY_EVENTINFO Pty_EventInfo;
} Event;
} HBA_EVENTINFO, *PHBA_EVENTINFO;
typedef PVOID PHBA_ENTRYPOINTS;
typedef PVOID PHBA_ENTRYPOINTSV2;
HBA_STATUS HBA_API HBA_RegisterLibrary(PHBA_ENTRYPOINTS entrypoints);
HBA_STATUS HBA_API HBA_RegisterLibraryV2(PHBA_ENTRYPOINTSV2 entrypoints);
HBA_UINT32 HBA_API HBA_GetVersion();
HBA_STATUS HBA_API HBA_LoadLibrary();
HBA_STATUS HBA_API HBA_FreeLibrary();
HBA_UINT32 HBA_API HBA_GetNumberOfAdapters();
HBA_STATUS HBA_API
HBA_GetAdapterName(
IN HBA_UINT32 adapterindex,
OUT char *adaptername
);
HBA_HANDLE HBA_API
HBA_OpenAdapter(
IN char* adaptername
);
void HBA_API HBA_CloseAdapter(
IN HBA_HANDLE handle
);
HBA_STATUS HBA_API
HBA_GetAdapterAttributes(
IN HBA_HANDLE handle,
OUT HBA_ADAPTERATTRIBUTES *hbaattributes
);
HBA_STATUS HBA_API HBA_GetAdapterPortAttributes(
IN HBA_HANDLE handle,
IN HBA_UINT32 portindex,
OUT HBA_PORTATTRIBUTES *portattributes
);
HBA_STATUS HBA_API HBA_GetPortStatistics(
HBA_HANDLE handle,
HBA_UINT32 portindex,
HBA_PORTSTATISTICS *portstatistics
);
HBA_STATUS HBA_API HBA_GetDiscoveredPortAttributes(
HBA_HANDLE handle,
HBA_UINT32 portindex,
HBA_UINT32 discoveredportindex,
HBA_PORTATTRIBUTES *portattributes
);
HBA_STATUS HBA_API HBA_GetPortAttributesByWWN(
HBA_HANDLE handle,
HBA_WWN PortWWN,
HBA_PORTATTRIBUTES *portattributes
);
HBA_STATUS HBA_API HBA_SendCTPassThru(
HBA_HANDLE handle,
void * pReqBuffer,
HBA_UINT32 ReqBufferSize,
void * pRspBuffer,
HBA_UINT32 RspBufferSize
);
HBA_STATUS HBA_API HBA_GetEventBuffer(
HBA_HANDLE handle,
PHBA_EVENTINFO EventBuffer,
HBA_UINT32 *EventCount);
HBA_STATUS HBA_API HBA_SetRNIDMgmtInfo(
HBA_HANDLE handle,
HBA_MGMTINFO *pInfo);
HBA_STATUS HBA_API HBA_GetRNIDMgmtInfo(
HBA_HANDLE handle,
HBA_MGMTINFO *pInfo);
HBA_STATUS HBA_API HBA_SendRNID(
HBA_HANDLE handle,
HBA_WWN wwn,
HBA_WWNTYPE wnntype,
void * pRspBuffer,
HBA_UINT32 *RspBufferSize
);
HBA_STATUS HBA_API HBA_GetFcpTargetMapping (
HBA_HANDLE handle,
PHBA_FCPTARGETMAPPING mapping
);
HBA_STATUS HBA_API HBA_GetFcpPersistentBinding (
HBA_HANDLE handle,
PHBA_FCPBINDING binding
);
HBA_STATUS HBA_API HBA_SendScsiInquiry (
HBA_HANDLE handle,
HBA_WWN PortWWN,
HBA_UINT64 fcLUN,
HBA_UINT8 EVPD,
HBA_UINT32 PageCode,
void * pRspBuffer,
HBA_UINT32 RspBufferSize,
void * pSenseBuffer,
HBA_UINT32 SenseBufferSize);
HBA_STATUS HBA_API HBA_SendReportLUNs (
HBA_HANDLE handle,
HBA_WWN portWWN,
void * pRspBuffer,
HBA_UINT32 RspBufferSize,
void * pSenseBuffer,
HBA_UINT32 SenseBufferSize
);
HBA_STATUS HBA_API HBA_SendReadCapacity (
HBA_HANDLE handle,
HBA_WWN portWWN,
HBA_UINT64 fcLUN,
void * pRspBuffer,
HBA_UINT32 RspBufferSize,
void * pSenseBuffer,
HBA_UINT32 SenseBufferSize
);
void HBA_API HBA_RefreshInformation(HBA_HANDLE handle);
void HBA_API HBA_ResetStatistics(HBA_HANDLE handle, HBA_UINT32 portindex);
typedef void *HBA_CALLBACKHANDLE;
typedef HBA_CALLBACKHANDLE *PHBA_CALLBACKHANDLE;
/* Adapter Level Events */
#define HBA_EVENT_ADAPTER_UNKNOWN 0x100
#define HBA_EVENT_ADAPTER_ADD 0x101
#define HBA_EVENT_ADAPTER_REMOVE 0x102
#define HBA_EVENT_ADAPTER_CHANGE 0x103
/* Port Level Events */
#define HBA_EVENT_PORT_UNKNOWN 0x200
#define HBA_EVENT_PORT_OFFLINE 0x201
#define HBA_EVENT_PORT_ONLINE 0x202
#define HBA_EVENT_PORT_NEW_TARGETS 0x203
#define HBA_EVENT_PORT_FABRIC 0x204
/* Port Statistics Events */
#define HBA_EVENT_PORT_STAT_THRESHOLD 0x301
#define HBA_EVENT_PORT_STAT_GROWTH 0x302
/* Target Level Events */
#define HBA_EVENT_TARGET_UNKNOWN 0x400
#define HBA_EVENT_TARGET_OFFLINE 0x401
#define HBA_EVENT_TARGET_ONLINE 0x402
#define HBA_EVENT_TARGET_REMOVED 0x403
/* Fabric Link Events */
#define HBA_EVENT_LINK_UNKNOWN 0x500
#define HBA_EVENT_LINK_INCIDENT 0x501
HBA_STATUS HBA_API HBA_RemoveCallback(
HBA_CALLBACKHANDLE callbackHandle
);
HBA_STATUS HBA_API HBA_RegisterForAdapterAddEvents(
void (*callback) (void *data, HBA_WWN PortWWN, HBA_UINT32 eventType),
void *userData,
HBA_CALLBACKHANDLE *callbackHandle
);
HBA_STATUS HBA_API HBA_RegisterForAdapterEvents(
void (*callback) (void *data, HBA_WWN PortWWN, HBA_UINT32 eventType),
void *userData,
HBA_HANDLE handle,
HBA_CALLBACKHANDLE *callbackHandle
);
HBA_STATUS HBA_API HBA_RegisterForAdapterPortEvents(
void (*callback) (void *data, HBA_WWN PortWWN,
HBA_UINT32 eventType, HBA_UINT32 fabricPortID),
void *userData,
HBA_HANDLE handle,
HBA_WWN PortWWN,
HBA_CALLBACKHANDLE *callbackHandle
);
HBA_STATUS HBA_API HBA_RegisterForAdapterPortStatEvents(
void (*callback)(void *data, HBA_WWN PortWWN,
HBA_UINT32 eventType),
void *userData,
HBA_HANDLE handle,
HBA_WWN PortWWN,
HBA_PORTSTATISTICS *stats,
HBA_UINT32 statType,
HBA_CALLBACKHANDLE *callbackHandle
);
HBA_STATUS HBA_API HBA_RegisterForTargetEvents(
void (*callback)(void *data, HBA_WWN hbaPortWWN,
HBA_WWN discoveredPortWWN, HBA_UINT32 eventType),
void *userData,
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
HBA_WWN discoveredPortWWN,
HBA_CALLBACKHANDLE *callbackHandle,
HBA_UINT32 allTargets
);
HBA_STATUS HBA_API HBA_RegisterForLinkEvents(
void (*callback)(void *data, HBA_WWN adapterWWN, HBA_UINT32 eventType,
void *pRLIRBuffer, HBA_UINT32 RLIRBufferSize),
void *userData,
void *pRLIRBuffer,
HBA_UINT32 RLIRBufferSize,
HBA_HANDLE handle,
HBA_CALLBACKHANDLE *callbackHandle
);
HBA_STATUS HBA_API
HBA_OpenAdapterByWWN(
OUT HBA_HANDLE *HbaHandle,
IN HBA_WWN Wwn
);
void HBA_API
HBA_RefreshAdapterConfiguration(
);
HBA_STATUS HBA_API HBA_SendCTPassThruV2(
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
void * pReqBuffer,
HBA_UINT32 ReqBufferSize,
void * pRspBuffer,
HBA_UINT32 * pRspBufferSize
);
HBA_STATUS HBA_API
HBA_SendRNIDV2(
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
HBA_WWN destWWN,
HBA_UINT32 destFCID,
HBA_UINT32 NodeIdDataFormat,
void *pRspBuffer,
HBA_UINT32 *pRspBufferSize
);
HBA_STATUS HBA_API HBA_SendRPL(
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
HBA_WWN agent_wwn,
HBA_UINT32 agent_domain,
HBA_UINT32 portIndex,
void *pRspBuffer,
HBA_UINT32 *RspBufferSize
);
HBA_STATUS HBA_API HBA_SendRPS(
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
HBA_WWN agent_wwn,
HBA_UINT32 agent_domain,
HBA_WWN object_wwn,
HBA_UINT32 object_port_number,
void *pRspBuffer,
HBA_UINT32 *RspBufferSize
);
HBA_STATUS HBA_API HBA_SendSRL(
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
HBA_WWN wwn,
HBA_UINT32 domain,
void *pRspBuffer,
HBA_UINT32 *RspBufferSize
);
HBA_STATUS HBA_API HBA_SendLIRR(
HBA_HANDLE handle,
HBA_WWN sourceWWN,
HBA_WWN destWWN,
HBA_UINT8 function,
HBA_UINT8 type,
void *pRspBuffer,
HBA_UINT32 *RspBufferSize
);
typedef struct HBA_FC4Statistics {
HBA_INT64 InputRequests;
HBA_INT64 OutputRequests;
HBA_INT64 ControlRequests;
HBA_INT64 InputMegabytes;
HBA_INT64 OutputMegabytes;
} HBA_FC4STATISTICS, *PHBA_FC4STATISTICS;
HBA_STATUS HBA_API HBA_GetFC4Statistics(
HBA_HANDLE handle,
HBA_WWN portWWN,
HBA_UINT8 FC4type,
HBA_FC4STATISTICS *statistics
);
HBA_STATUS HBA_API HBA_GetFCPStatistics(
HBA_HANDLE handle,
const HBA_SCSIID *lunit,
HBA_FC4STATISTICS *statistics
);
typedef struct HBA_LibraryAttributes {
HBA_BOOLEAN final;
char LibPath[256];
char VName[256];
char VVersion[256];
struct tm build_date;
} HBA_LIBRARYATTRIBUTES, *PHBA_LIBRARYATTRIBUTES;
HBA_UINT32 HBA_API
HBA_GetWrapperLibraryAttributes(
OUT HBA_LIBRARYATTRIBUTES *attributes
);
HBA_UINT32 HBA_API HBA_GetVendorLibraryAttributes(
IN HBA_UINT32 adapter_index,
OUT HBA_LIBRARYATTRIBUTES *attributes
);
HBA_STATUS HBA_API
HBA_ScsiReadCapacityV2(
HBA_HANDLE HbaHandle,
HBA_WWN hbaPortWWN,
HBA_WWN discoveredPortWWN,
HBA_UINT64 fcLUN,
void *pRespBuffer,
HBA_UINT32 *pRespBufferSize,
HBA_UINT8 *pScsiStatus,
void *pSenseBuffer,
HBA_UINT32 *pSenseBufferSize
);
HBA_STATUS HBA_API
HBA_ScsiReportLUNsV2(
HBA_HANDLE Hbahandle,
HBA_WWN hbaPortWWN,
HBA_WWN discoveredPortWWN,
void *pRespBuffer,
HBA_UINT32 *pRespBufferSize,
HBA_UINT8 *pScsiStatus,
void *pSenseBuffer,
HBA_UINT32 *pSenseBufferSize
);
HBA_STATUS HBA_API
HBA_ScsiInquiryV2 (
HBA_HANDLE HbaHandle,
HBA_WWN hbaPortWWN,
HBA_WWN discoveredPortWWN,
HBA_UINT64 fcLUN,
HBA_UINT8 CDB_Byte1,
HBA_UINT8 CDB_Byte2,
void *pRespBuffer,
HBA_UINT32 *pRespBufferSize,
HBA_UINT8 *pScsiStatus,
void *pSenseBuffer,
HBA_UINT32 *pSenseBufferSize
);
HBA_STATUS HBA_API
HBA_GetFcpTargetMappingV2 (
HBA_HANDLE HbaHandle,
HBA_WWN hbaPortWWN,
PHBA_FCPTARGETMAPPING2 Mapping
);
#endif HBAAPI_H