#ifndef _VENDORSMHBAAPI_H_
#define _VENDORSMHBAAPI_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <vendorhbaapi.h>
typedef HBA_UINT32 (* SMHBAGetVersionFunc)();
typedef HBA_UINT32 (* SMHBAGetWrapperLibraryAttributesFunc)
(HBA_UINT32, SMHBA_LIBRARYATTRIBUTES *);
typedef HBA_UINT32 (* SMHBAGetVendorLibraryAttributesFunc)
(SMHBA_LIBRARYATTRIBUTES *);
typedef HBA_STATUS (* SMHBAGetAdapterAttributesFunc)
(HBA_HANDLE, SMHBA_ADAPTERATTRIBUTES *);
typedef HBA_STATUS (* SMHBAGetNumberOfPortsFunc)
(HBA_HANDLE, HBA_UINT32 *);
typedef HBA_STATUS (* SMHBAGetPortTypeFunc)
(HBA_HANDLE, HBA_UINT32, HBA_PORTTYPE *);
typedef HBA_STATUS (* SMHBAGetAdapterPortAttributesFunc)
(HBA_HANDLE, HBA_UINT32, SMHBA_PORTATTRIBUTES *);
typedef HBA_STATUS (* SMHBAGetDiscoveredPortAttributesFunc)
(HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_PORTATTRIBUTES *);
typedef HBA_STATUS (* SMHBAGetPortAttributesByWWNFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_PORTATTRIBUTES *);
typedef HBA_STATUS (* SMHBAGetFCPhyAttributesFunc)
(HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_FC_PHY *);
typedef HBA_STATUS (* SMHBAGetSASPhyAttributesFunc)
(HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_SAS_PHY *);
typedef HBA_STATUS (* SMHBAGetProtocolStatisticsFunc)
(HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_PROTOCOLSTATISTICS *);
typedef HBA_STATUS (* SMHBAGetPhyStatisticsFunc)
(HBA_HANDLE, HBA_UINT32, HBA_UINT32, SMHBA_PHYSTATISTICS *);
typedef HBA_STATUS (* SMHBASendTESTFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, void *, HBA_UINT32);
typedef HBA_STATUS (* SMHBASendECHOFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_UINT32, void *, HBA_UINT32,
void *, HBA_UINT32 *);
typedef HBA_STATUS (* SMHBASendSMPPassThruFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN, void *, HBA_UINT32, void *,
HBA_UINT32 *);
typedef HBA_STATUS (* SMHBAGetBindingCapabilityFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_BIND_CAPABILITY *);
typedef HBA_STATUS (* SMHBAGetBindingSupportFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_BIND_CAPABILITY *);
typedef HBA_STATUS (* SMHBASetBindingSupportFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_BIND_CAPABILITY);
typedef HBA_STATUS (* SMHBAGetTargetMappingFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_TARGETMAPPING *);
typedef HBA_STATUS (* SMHBAGetPersistentBindingFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, SMHBA_BINDING *);
typedef HBA_STATUS (* SMHBASetPersistentBindingFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, const SMHBA_BINDING *);
typedef HBA_STATUS (* SMHBARemovePersistentBindingFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, const SMHBA_BINDING *);
typedef HBA_STATUS (* SMHBARemoveAllPersistentBindingsFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN);
typedef HBA_STATUS (* SMHBAGetLUNStatisticsFunc)
(HBA_HANDLE, const HBA_SCSIID *, SMHBA_PROTOCOLSTATISTICS *);
typedef HBA_STATUS (* SMHBARegisterForAdapterAddEventsFunc)
(void (*)(void *, HBA_WWN, HBA_UINT32), void *, HBA_CALLBACKHANDLE *);
typedef HBA_STATUS (* SMHBARegisterForAdapterEventsFunc)
(void (*)(void *, HBA_WWN, HBA_UINT32),
void *, HBA_HANDLE, HBA_CALLBACKHANDLE *);
typedef HBA_STATUS (* SMHBARegisterForAdapterPortEventsFunc)
(void (*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32),
void *, HBA_HANDLE, HBA_WWN, HBA_UINT32, HBA_CALLBACKHANDLE *);
typedef HBA_STATUS (* SMHBARegisterForAdapterPortStatEventsFunc)
(void (*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32),
void *, HBA_HANDLE, HBA_WWN, HBA_UINT32, SMHBA_PROTOCOLSTATISTICS,
HBA_UINT32, HBA_CALLBACKHANDLE *);
typedef HBA_STATUS (* SMHBARegisterForAdapterPhyStatEventsFunc)
(void (*)(void *, HBA_WWN, HBA_UINT32, HBA_UINT32),
void *, HBA_HANDLE, HBA_WWN, HBA_UINT32, SMHBA_PHYSTATISTICS,
HBA_UINT32, HBA_CALLBACKHANDLE *);
typedef HBA_STATUS (* SMHBARegisterForTargetEventsFunc)
(void (*)(void *, HBA_WWN, HBA_WWN, HBA_WWN, HBA_UINT32),
void *, HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN,
HBA_CALLBACKHANDLE *, HBA_UINT32);
typedef HBA_STATUS (* SMHBAScsiInquiryFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN, SMHBA_SCSILUN, HBA_UINT8,
HBA_UINT8, void *, HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *);
typedef HBA_STATUS (* SMHBAScsiReportLUNsFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN, void *, HBA_UINT32 *,
HBA_UINT8 *, void *, HBA_UINT32 *);
typedef HBA_STATUS (* SMHBAScsiReadCapacityFunc)
(HBA_HANDLE, HBA_WWN, HBA_WWN, HBA_WWN, SMHBA_SCSILUN, void *,
HBA_UINT32 *, HBA_UINT8 *, void *, HBA_UINT32 *);
typedef struct SMHBA_EntryPoints {
SMHBAGetVersionFunc GetVersionHandler;
HBALoadLibraryFunc LoadLibraryHandler;
HBAFreeLibraryFunc FreeLibraryHandler;
HBAGetNumberOfAdaptersFunc GetNumberOfAdaptersHandler;
HBARefreshInformationFunc RefreshInformationHandler;
SMHBAGetVendorLibraryAttributesFunc
GetVendorLibraryAttributesHandler;
HBAGetAdapterNameFunc GetAdapterNameHandler;
HBAOpenAdapterFunc OpenAdapterHandler;
HBACloseAdapterFunc CloseAdapterHandler;
SMHBAGetAdapterAttributesFunc GetAdapterAttributesHandler;
SMHBAGetNumberOfPortsFunc GetNumberOfPortsHandler;
SMHBAGetPortTypeFunc GetPortTypeHandler;
SMHBAGetAdapterPortAttributesFunc
GetAdapterPortAttributesHandler;
SMHBAGetDiscoveredPortAttributesFunc
GetDiscoveredPortAttributesHandler;
SMHBAGetPortAttributesByWWNFunc GetPortAttributesByWWNHandler;
SMHBAGetFCPhyAttributesFunc GetFCPhyAttributesHandler;
SMHBAGetSASPhyAttributesFunc GetSASPhyAttributesHandler;
SMHBAGetProtocolStatisticsFunc GetProtocolStatisticsHandler;
SMHBAGetPhyStatisticsFunc GetPhyStatisticsHandler;
HBASendCTPassThruV2Func SendCTPassThruV2Handler;
HBASetRNIDMgmtInfoFunc SetRNIDMgmtInfoHandler;
HBAGetRNIDMgmtInfoFunc GetRNIDMgmtInfoHandler;
HBASendRNIDV2Func SendRNIDV2Handler;
HBASendRPLFunc SendRPLHandler;
HBASendRPSFunc SendRPSHandler;
HBASendSRLFunc SendSRLHandler;
HBASendLIRRFunc SendLIRRHandler;
HBASendRLSFunc SendRLSHandler;
SMHBASendTESTFunc SendTESTHandler;
SMHBASendECHOFunc SendECHOHandler;
SMHBASendSMPPassThruFunc SendSMPPassThruHandler;
SMHBAGetBindingCapabilityFunc GetBindingCapabilityHandler;
SMHBAGetBindingSupportFunc GetBindingSupportHandler;
SMHBASetBindingSupportFunc SetBindingSupportHandler;
SMHBAGetTargetMappingFunc GetTargetMappingHandler;
SMHBAGetPersistentBindingFunc GetPersistentBindingHandler;
SMHBASetPersistentBindingFunc SetPersistentBindingHandler;
SMHBARemovePersistentBindingFunc RemovePersistentBindingHandler;
SMHBARemoveAllPersistentBindingsFunc
RemoveAllPersistentBindingsHandler;
SMHBAGetLUNStatisticsFunc GetLUNStatisticsHandler;
SMHBAScsiInquiryFunc ScsiInquiryHandler;
SMHBAScsiReportLUNsFunc ScsiReportLUNsHandler;
SMHBAScsiReadCapacityFunc ScsiReadCapacityHandler;
SMHBARegisterForAdapterAddEventsFunc
RegisterForAdapterAddEventsHandler;
SMHBARegisterForAdapterEventsFunc RegisterForAdapterEventsHandler;
SMHBARegisterForAdapterPortEventsFunc
RegisterForAdapterPortEventsHandler;
SMHBARegisterForAdapterPortStatEventsFunc
RegisterForAdapterPortStatEventsHandler;
SMHBARegisterForAdapterPhyStatEventsFunc
RegisterForAdapterPhyStatEventsHandler;
SMHBARegisterForTargetEventsFunc RegisterForTargetEventsHandler;
HBARegisterForLinkEventsFunc RegisterForLinkEventsHandler;
HBARemoveCallbackFunc RemoveCallbackHandler;
} SMHBA_ENTRYPOINTS, *PSMHBA_ENTRYPOINTS;
typedef HBA_UINT32 (* SMHBARegisterLibraryFunc)(SMHBA_ENTRYPOINTS *);
HBA_STATUS SMHBA_RegisterLibrary(
SMHBA_ENTRYPOINTS *functionTable
);
#ifdef __cplusplus
}
#endif
#endif