#ifdef __cplusplus
extern "C" {
#endif
#ifndef HBA_API_H
#define HBA_API_H
#define HBA_LIBVERSION 2
#ifdef WIN32
#ifdef HBAAPI_EXPORTS
#define HBA_API __declspec(dllexport)
#else
#define HBA_API __declspec(dllimport)
#endif
#else
#define HBA_API
#endif
#ifdef WIN32
typedef unsigned char HBA_UINT8;
typedef char HBA_INT8;
typedef unsigned short HBA_UINT16;
typedef short HBA_INT16;
typedef unsigned int HBA_UINT32;
typedef int HBA_INT32;
typedef void* HBA_PVOID;
typedef HBA_UINT32 HBA_VOID32;
#ifdef _WIN32
typedef _int64 HBA_INT64;
typedef unsigned _int64 HBA_UINT64;
#else
typedef struct {
TN_UINT32 lo_val;
TN_UINT32 hi_val;
} HBA_INT64;
typedef struct {
TN_UINT32 lo_val;
TN_UINT32 hi_val;
} HBA_UINT64;
#endif
#else
#include <time.h>
typedef unsigned char HBA_UINT8;
typedef char HBA_INT8;
typedef unsigned short HBA_UINT16;
typedef short HBA_INT16;
typedef unsigned int HBA_UINT32;
typedef int HBA_INT32;
typedef void* HBA_PVOID;
typedef HBA_UINT32 HBA_VOID32;
typedef long long HBA_INT64;
typedef long long HBA_UINT64;
#endif
typedef HBA_UINT32 HBA_HANDLE;
#define HBA_HANDLE_INVALID 0
typedef HBA_UINT32 HBA_STATUS;
#define HBA_STATUS_OK 0
#define HBA_STATUS_ERROR 1
#define HBA_STATUS_ERROR_NOT_SUPPORTED 2
#define HBA_STATUS_ERROR_INVALID_HANDLE 3
#define HBA_STATUS_ERROR_ARG 4
#define HBA_STATUS_ERROR_ILLEGAL_WWN 5
#define HBA_STATUS_ERROR_ILLEGAL_INDEX 6
#define HBA_STATUS_ERROR_MORE_DATA 7
#define HBA_STATUS_ERROR_STALE_DATA 8
#define HBA_STATUS_SCSI_CHECK_CONDITION 9
#define HBA_STATUS_ERROR_BUSY 10
#define HBA_STATUS_ERROR_TRY_AGAIN 11
#define HBA_STATUS_ERROR_UNAVAILABLE 12
#define HBA_STATUS_ERROR_ELS_REJECT 13
#define HBA_STATUS_ERROR_INVALID_LUN 14
#define HBA_STATUS_ERROR_INCOMPATIBLE 15
#define HBA_STATUS_ERROR_AMBIGUOUS_WWN 16
#define HBA_STATUS_ERROR_LOCAL_BUS 17
#define HBA_STATUS_ERROR_LOCAL_TARGET 18
#define HBA_STATUS_ERROR_LOCAL_LUN 19
#define HBA_STATUS_ERROR_LOCAL_SCSIID_BOUND 20
#define HBA_STATUS_ERROR_TARGET_FCID 21
#define HBA_STATUS_ERROR_TARGET_NODE_WWN 22
#define HBA_STATUS_ERROR_TARGET_PORT_WWN 23
#define HBA_STATUS_ERROR_TARGET_LUN 24
#define HBA_STATUS_ERROR_TARGET_LUID 25
#define HBA_STATUS_ERROR_NO_SUCH_BINDING 26
#define HBA_STATUS_ERROR_NOT_A_TARGET 27
#define HBA_STATUS_ERROR_UNSUPPORTED_FC4 28
#define HBA_STATUS_ERROR_INCAPABLE 29
typedef HBA_UINT32 HBA_PORTTYPE;
#define HBA_PORTTYPE_UNKNOWN 1
#define HBA_PORTTYPE_OTHER 2
#define HBA_PORTTYPE_NOTPRESENT 3
#define HBA_PORTTYPE_NPORT 5
#define HBA_PORTTYPE_NLPORT 6
#define HBA_PORTTYPE_FLPORT 7
#define HBA_PORTTYPE_FPORT 8
#define HBA_PORTTYPE_EPORT 9
#define HBA_PORTTYPE_GPORT 10
#define HBA_PORTTYPE_LPORT 20
#define HBA_PORTTYPE_PTP 21
typedef HBA_UINT32 HBA_PORTSTATE;
#define HBA_PORTSTATE_UNKNOWN 1
#define HBA_PORTSTATE_ONLINE 2
#define HBA_PORTSTATE_OFFLINE 3
#define HBA_PORTSTATE_BYPASSED 4
#define HBA_PORTSTATE_DIAGNOSTICS 5
#define HBA_PORTSTATE_LINKDOWN 6
#define HBA_PORTSTATE_ERROR 7
#define HBA_PORTSTATE_LOOPBACK 8
typedef HBA_UINT32 HBA_PORTSPEED;
#define HBA_PORTSPEED_UNKNOWN 0
#define HBA_PORTSPEED_1GBIT 1
#define HBA_PORTSPEED_2GBIT 2
#define HBA_PORTSPEED_10GBIT 4
#define HBA_PORTSPEED_4GBIT 8
#define HBA_PORTSPEED_8GBIT 16
#define HBA_PORTSPEED_16GBIT 32
#define HBA_PORTSPEED_32GBIT 64
#define HBA_PORTSPEED_NOT_NEGOTIATED (1<<15)
typedef HBA_UINT32 HBA_COS;
typedef struct HBA_fc4types {
HBA_UINT8 bits[32];
} HBA_FC4TYPES, *PHBA_FC4TYPES;
typedef struct HBA_wwn {
HBA_UINT8 wwn[8];
} HBA_WWN, *PHBA_WWN;
typedef struct HBA_ipaddress {
int ipversion;
union
{
unsigned char ipv4address[4];
unsigned char ipv6address[16];
} ipaddress;
} HBA_IPADDRESS, *PHBA_IPADDRESS;
typedef HBA_INT8 HBA_BOOLEAN;
typedef struct hba_AdapterAttributes {
char Manufacturer[64];
char SerialNumber[64];
char Model[256];
char ModelDescription[256];
HBA_WWN NodeWWN;
char NodeSymbolicName[256];
char HardwareVersion[256];
char DriverVersion[256];
char OptionROMVersion[256];
char FirmwareVersion[256];
HBA_UINT32 VendorSpecificID;
HBA_UINT32 NumberOfPorts;
char DriverName[256];
} HBA_ADAPTERATTRIBUTES, *PHBA_ADAPTERATTRIBUTES;
typedef struct HBA_PortAttributes {
HBA_WWN NodeWWN;
HBA_WWN PortWWN;
HBA_UINT32 PortFcId;
HBA_PORTTYPE PortType;
HBA_PORTSTATE PortState;
HBA_COS PortSupportedClassofService;
HBA_FC4TYPES PortSupportedFc4Types;
HBA_FC4TYPES PortActiveFc4Types;
char PortSymbolicName[256];
char OSDeviceName[256];
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;
typedef enum HBA_fcpbindingtype { TO_D_ID, TO_WWN, TO_OTHER } HBA_FCPBINDINGTYPE;
typedef struct HBA_ScsiId {
char OSDeviceName[256];
HBA_UINT32 ScsiBusNumber;
HBA_UINT32 ScsiTargetNumber;
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_LUID {
char buffer[256];
} HBA_LUID, *PHBA_LUID;
typedef struct HBA_FcpScsiEntry {
HBA_SCSIID ScsiId;
HBA_FCPID FcpId;
} HBA_FCPSCSIENTRY, *PHBA_FCPSCSIENTRY;
typedef struct HBA_FcpScsiEntryV2 {
HBA_SCSIID ScsiId;
HBA_FCPID FcpId;
HBA_LUID LUID;
} HBA_FCPSCSIENTRYV2, *PHBA_FCPSCSIENTRYV2;
typedef struct HBA_FCPTargetMapping {
HBA_UINT32 NumberOfEntries;
HBA_FCPSCSIENTRY entry[1];
} HBA_FCPTARGETMAPPING, *PHBA_FCPTARGETMAPPING;
typedef struct HBA_FCPTargetMappingV2 {
HBA_UINT32 NumberOfEntries;
HBA_FCPSCSIENTRYV2 entry[1];
} HBA_FCPTARGETMAPPINGV2, *PHBA_FCPTARGETMAPPINGV2;
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];
} HBA_FCPBINDING, *PHBA_FCPBINDING;
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;
HBA_UINT32 Reserved[3];
} HBA_LINK_EVENTINFO, *PHBA_LINK_EVENTINFO;
typedef struct HBA_RSCN_EventInfo {
HBA_UINT32 PortFcId;
HBA_UINT32 NPortPage;
HBA_UINT32 Reserved[2];
} HBA_RSCN_EVENTINFO, *PHBA_RSCN_EVENTINFO;
typedef struct HBA_Pty_EventInfo {
HBA_UINT32 PtyData[4];
} 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 struct HBA_LibraryAttributes {
HBA_BOOLEAN final;
char LibPath[256];
char VName[256];
char VVersion[256];
struct tm build_date;
} HBA_LIBRARYATTRIBUTES, *PHBA_LIBRARYATTRIBUTES;
typedef HBA_UINT32 HBA_BIND_TYPE;
#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 HBA_UINT32 HBA_BIND_CAPABILITY;
#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
#define HBA_BIND_STATUS_DISABLED 0x00
#define HBA_BIND_STATUS_ENABLED 0x01
typedef HBA_UINT32 HBA_BIND_STATUS;
#define HBA_BIND_EFFECTIVE_AT_REBOOT 0x00
#define HBA_BIND_EFFECTIVE_IMMEDIATE 0x01
typedef HBA_UINT32 HBA_BIND_EFFECTIVE;
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];
} HBA_FCPBINDING2, *PHBA_FCPBINDING2;
typedef struct HBA_FC4Statistics {
HBA_INT64 InputRequests;
HBA_INT64 OutputRequests;
HBA_INT64 ControlRequests;
HBA_INT64 InputMegabytes;
HBA_INT64 OutputMegabytes;
} HBA_FC4STATISTICS, *PHBA_FC4STATISTICS;
typedef void * HBA_CALLBACKHANDLE;
#define HBA_EVENT_ADAPTER_UNKNOWN 0x100
#define HBA_EVENT_ADAPTER_ADD 0x101
#define HBA_EVENT_ADAPTER_REMOVE 0x102
#define HBA_EVENT_ADAPTER_CHANGE 0x103
#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
#define HBA_EVENT_PORT_STAT_THRESHOLD 0x301
#define HBA_EVENT_PORT_STAT_GROWTH 0x302
#define HBA_EVENT_TARGET_UNKNOWN 0x400
#define HBA_EVENT_TARGET_OFFLINE 0x401
#define HBA_EVENT_TARGET_ONLINE 0x402
#define HBA_EVENT_TARGET_REMOVED 0x403
#define HBA_EVENT_LINK_UNKNOWN 0x500
#define HBA_EVENT_LINK_INCIDENT 0x501
HBA_API HBA_UINT32 HBA_GetVersion();
HBA_API HBA_STATUS HBA_LoadLibrary(void);
HBA_API HBA_STATUS HBA_FreeLibrary(void);
HBA_API HBA_UINT32 HBA_GetNumberOfAdapters(void);
HBA_API HBA_STATUS HBA_GetAdapterName(
HBA_UINT32 adapterindex,
char *adaptername
);
HBA_API HBA_HANDLE HBA_OpenAdapter(
char* adaptername
);
HBA_API HBA_STATUS HBA_OpenAdapterByWWN(
HBA_HANDLE *handle,
HBA_WWN wwn
);
HBA_API void HBA_CloseAdapter(
HBA_HANDLE handle
);
HBA_API HBA_STATUS HBA_GetAdapterAttributes(
HBA_HANDLE handle,
HBA_ADAPTERATTRIBUTES
*hbaattributes
);
HBA_API HBA_STATUS HBA_GetAdapterPortAttributes(
HBA_HANDLE handle,
HBA_UINT32 portindex,
HBA_PORTATTRIBUTES *portattributes
);
HBA_API HBA_STATUS HBA_GetPortStatistics(
HBA_HANDLE handle,
HBA_UINT32 portindex,
HBA_PORTSTATISTICS *portstatistics
);
HBA_API HBA_STATUS HBA_GetDiscoveredPortAttributes(
HBA_HANDLE handle,
HBA_UINT32 portindex,
HBA_UINT32 discoveredportindex,
HBA_PORTATTRIBUTES *portattributes
);
HBA_API HBA_STATUS HBA_GetPortAttributesByWWN(
HBA_HANDLE handle,
HBA_WWN PortWWN,
HBA_PORTATTRIBUTES *portattributes
);
HBA_API HBA_STATUS HBA_SendCTPassThruV2(
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
void *pReqBuffer,
HBA_UINT32 ReqBufferSize,
void *pRspBuffer,
HBA_UINT32 *pRspBufferSize
);
HBA_API HBA_STATUS HBA_SendCTPassThru(
HBA_HANDLE handle,
void *pReqBuffer,
HBA_UINT32 ReqBufferSize,
void *pRspBuffer,
HBA_UINT32 RspBufferSize
);
HBA_API void HBA_RefreshAdapterConfiguration();
HBA_API HBA_STATUS HBA_GetEventBuffer(
HBA_HANDLE handle,
HBA_EVENTINFO *EventBuffer,
HBA_UINT32 *EventBufferCount
);
HBA_API HBA_STATUS HBA_SetRNIDMgmtInfo(
HBA_HANDLE handle,
HBA_MGMTINFO Info
);
HBA_API HBA_STATUS HBA_GetRNIDMgmtInfo(
HBA_HANDLE handle,
HBA_MGMTINFO *pInfo
);
HBA_API HBA_STATUS HBA_SendRNIDV2(
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
HBA_WWN destWWN,
HBA_UINT32 destFCID,
HBA_UINT32 NodeIdDataFormat,
void *pRspBuffer,
HBA_UINT32 *pRspBufferSize
);
HBA_API HBA_STATUS HBA_SendRNID(
HBA_HANDLE handle,
HBA_WWN wwn,
HBA_WWNTYPE wwntype,
void *pRspBuffer,
HBA_UINT32 *pRspBufferSize
);
HBA_API HBA_STATUS HBA_SendRLS (
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
HBA_WWN destWWN,
void *pRspBuffer,
HBA_UINT32 *pRspBufferSize
);
HBA_API HBA_STATUS HBA_SendRPL (
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
HBA_WWN agent_wwn,
HBA_UINT32 agent_domain,
HBA_UINT32 portindex,
void *pRspBuffer,
HBA_UINT32 *pRspBufferSize
);
HBA_API HBA_STATUS 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 *pRspBufferSize
);
HBA_API HBA_STATUS HBA_SendSRL (
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
HBA_WWN wwn,
HBA_UINT32 domain,
void *pRspBuffer,
HBA_UINT32 *pRspBufferSize
);
HBA_API HBA_STATUS HBA_SendLIRR (
HBA_HANDLE handle,
HBA_WWN sourceWWN,
HBA_WWN destWWN,
HBA_UINT8 function,
HBA_UINT8 type,
void *pRspBuffer,
HBA_UINT32 *pRspBufferSize
);
HBA_API HBA_STATUS HBA_GetFC4Statistics (
HBA_HANDLE handle,
HBA_WWN portWWN,
HBA_UINT8 FC4type,
HBA_FC4STATISTICS *pstatistics
);
HBA_API HBA_STATUS HBA_GetFCPStatistics (
HBA_HANDLE handle,
const HBA_SCSIID *lunit,
HBA_FC4STATISTICS *pstatistics);
HBA_API void HBA_RefreshInformation(
HBA_HANDLE handle
);
HBA_API void HBA_ResetStatistics(
HBA_HANDLE handle,
HBA_UINT32 portindex
);
HBA_API HBA_STATUS HBA_GetFcpTargetMapping(
HBA_HANDLE handle,
HBA_FCPTARGETMAPPING
*pmapping
);
HBA_API HBA_STATUS HBA_GetFcpTargetMappingV2(
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
HBA_FCPTARGETMAPPINGV2
*pmapping
);
HBA_API HBA_STATUS HBA_GetBindingCapability(
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
HBA_BIND_CAPABILITY *pcapability
);
HBA_API HBA_STATUS HBA_GetBindingSupport(
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
HBA_BIND_CAPABILITY *pcapability
);
HBA_API HBA_STATUS HBA_SetBindingSupport(
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
HBA_BIND_CAPABILITY capability
);
HBA_API HBA_STATUS HBA_SetPersistentBindingV2(
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
const HBA_FCPBINDING2
*pbinding
);
HBA_API HBA_STATUS HBA_GetPersistentBindingV2(
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
HBA_FCPBINDING2 *binding
);
HBA_API HBA_STATUS HBA_RemovePersistentBinding(
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
const HBA_FCPBINDING2
*pbinding
);
HBA_API HBA_STATUS HBA_GetFcpPersistentBinding(
HBA_HANDLE handle,
HBA_FCPBINDING *binding
);
HBA_API HBA_STATUS HBA_RemoveAllPersistentBindings(
HBA_HANDLE handle,
HBA_WWN hbaPortWWN
);
HBA_STATUS HBA_ScsiInquiryV2 (
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
HBA_WWN discoveredPortWWN,
HBA_UINT64 fcLUN,
HBA_UINT8 CDB_Byte1,
HBA_UINT8 CDB_BYte2,
void *pRspBuffer,
HBA_UINT32 *pRspBufferSize,
HBA_UINT8 *pScsiStatus,
void *pSenseBuffer,
HBA_UINT32 *pSenseBufferSize
);
HBA_API HBA_STATUS 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_API HBA_STATUS HBA_ScsiReportLUNsV2(
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
HBA_WWN discoveredPortWWN,
void *pRespBuffer,
HBA_UINT32 *pRespBufferSize,
HBA_UINT8 *pScsiStatus,
void *pSenseBuffer,
HBA_UINT32 *pSenseBufferSize
);
HBA_API HBA_STATUS HBA_SendReportLUNs (
HBA_HANDLE handle,
HBA_WWN portWWN,
void *pRspBuffer,
HBA_UINT32 RspBufferSize,
void *pSenseBuffer,
HBA_UINT32 SenseBufferSize
);
HBA_API HBA_STATUS HBA_ScsiReadCapacityV2(
HBA_HANDLE handle,
HBA_WWN hbaPortWWN,
HBA_WWN discoveredPortWWN,
HBA_UINT64 fcLUN,
void *pRspBuffer,
HBA_UINT32 *pRspBufferSize,
HBA_UINT8 *pScsiStatus,
void *pSenseBuffer,
HBA_UINT32 *SenseBufferSize
);
HBA_API HBA_STATUS HBA_SendReadCapacity (
HBA_HANDLE handle,
HBA_WWN portWWN,
HBA_UINT64 fcLUN,
void *pRspBuffer,
HBA_UINT32 RspBufferSize,
void *pSenseBuffer,
HBA_UINT32 SenseBufferSize
);
HBA_API HBA_UINT32 HBA_GetVendorLibraryAttributes (
HBA_UINT32 adapter_index,
HBA_LIBRARYATTRIBUTES
*attributes
);
HBA_API HBA_STATUS HBA_RemoveCallback(
HBA_CALLBACKHANDLE callbackHandle
);
HBA_API HBA_STATUS HBA_RegisterForAdapterAddEvents(
void (*callback) (
void *data,
HBA_WWN PortWWN,
HBA_UINT32 eventType
),
void *userData,
HBA_CALLBACKHANDLE *callbackHandle
);
HBA_API HBA_STATUS HBA_RegisterForAdapterEvents(
void (*callback)(
void *data,
HBA_WWN PortWWN,
HBA_UINT32 eventType
),
void *userData,
HBA_HANDLE handle,
HBA_CALLBACKHANDLE *callbackHandle
);
HBA_API HBA_STATUS 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_API HBA_STATUS 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_API HBA_STATUS 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_API HBA_STATUS 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_API HBA_UINT32 HBA_GetWrapperLibraryAttributes (
HBA_LIBRARYATTRIBUTES
*attributes
);
#endif
#ifdef __cplusplus
}
#endif