<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.3243" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Arial size=2><SPAN class=348243108-01062009>Added macro 
CL_PRINT_TO_EVENT_LOG, sending a string to System Event Log.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=348243108-01062009></SPAN></FONT> </DIV>
<DIV><SPAN class=348243108-01062009><FONT face=Arial size=2>    
</FONT></SPAN><FONT face=Arial 
size=2>CL_PRINT_TO_EVENT_LOG(_obj_,_event_id_,_msg_)<BR>   <SPAN 
class=348243108-01062009>    </SPAN>obj - FDO of IBBUS<BR><SPAN 
class=348243108-01062009>    </SPAN>   event_id - 
EVENT_IBBUS_ANY_ERROR, EVENT_IBBUS_ANY_WARN, 
EVENT_IBBUS_ANY_INFO<BR>   <SPAN 
class=348243108-01062009>    </SPAN>msg - 
(<format_string>[,p<SPAN class=348243108-01062009>a</SPAN>ram_lis<SPAN 
class=348243108-01062009>t</SPAN>])</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=348243108-01062009>FDO is stored in CA 
object.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=348243108-01062009></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=348243108-01062009></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Index: 
V:/svn/winib/trunk/core/complib/kernel/cl_log.c<BR>===================================================================<BR>--- 
V:/svn/winib/trunk/core/complib/kernel/cl_log.c (revision 4394)<BR>+++ 
V:/svn/winib/trunk/core/complib/kernel/cl_log.c (revision 4395)<BR>@@ 
-29,10 +29,123 @@<BR>  * $Id$<BR>  */<BR> <BR>-<BR>+#include 
<stdarg.h><BR> #include "complib/cl_log.h"<BR> <BR>+WCHAR 
g_cl_wlog[ CL_LOG_BUF_LEN ]; <BR>+UCHAR g_cl_slog[ CL_LOG_BUF_LEN ]; 
<BR> <BR>+<BR>+VOID<BR>+cl_event_log_write(<BR>+ PVOID p_io_object,<BR>+ ULONG p_error_code,<BR>+ ULONG p_unique_error_code,<BR>+ ULONG p_final_status,<BR>+ PWCHAR p_insertion_string,<BR>+ ULONG p_n_data_items,<BR>+ ...<BR>+ )<BR>+/*++<BR>+<BR>+Routine 
Description:<BR>+    Writes an event log entry to the event 
log.<BR>+<BR>+Arguments:<BR>+<BR>+ p_io_object......... The IO object ( 
driver object or device object ).<BR>+ p_error_code......... The error 
code.<BR>+ p_unique_error_code... A specific error 
code.<BR>+ p_final_status....... The final 
status.<BR>+ p_n_data_items........ Number of data 
items.<BR>+ .<BR>+ . data items values<BR>+ .<BR>+<BR>+Return 
Value:<BR>+<BR>+ None .<BR>+<BR>+--*/<BR>+{ /* WriteEventLogEntryStr 
*/<BR>+<BR>+ /* Variable argument list */    
<BR>+ va_list     l_Argptr;<BR>+ /* Pointer 
to an error log entry */<BR>+ PIO_ERROR_LOG_PACKET l_pErrorLogEntry; 
<BR>+ /* sizeof insertion string */<BR>+ int  l_Size = 
(int)((p_insertion_string) ? ((wcslen(p_insertion_string) + 1) * sizeof( WCHAR 
)) : 0);<BR>+ int l_PktSize 
=sizeof(IO_ERROR_LOG_PACKET)+p_n_data_items*sizeof(ULONG);<BR>+ int 
l_TotalSize =l_PktSize +l_Size;<BR>+<BR>+ if (p_io_object == NULL) 
{<BR>+  ASSERT(p_io_object != 
NULL);<BR>+  return;<BR>+ }<BR>+<BR>+ /* Init the variable 
argument list */   <BR>+ va_start(l_Argptr, 
p_n_data_items);<BR>+<BR>+ /* Allocate an error log entry */ <BR>+ if 
(l_TotalSize >= ERROR_LOG_MAXIMUM_SIZE - 2) <BR>+  l_TotalSize = 
ERROR_LOG_MAXIMUM_SIZE - 2;<BR>+ l_pErrorLogEntry = 
(PIO_ERROR_LOG_PACKET)IoAllocateErrorLogEntry(<BR>+  p_io_object,  
(UCHAR)l_TotalSize );<BR>+<BR>+ /* Check allocation */<BR>+ if ( 
l_pErrorLogEntry != NULL) <BR>+ { /* OK */<BR>+<BR>+  /* Data 
item index */<BR>+  USHORT l_nDataItem ;<BR>+<BR>+  /* Set 
the error log entry header 
*/<BR>+  l_pErrorLogEntry->ErrorCode   = 
p_error_code; <BR>+  l_pErrorLogEntry->DumpDataSize  = 
(USHORT) (p_n_data_items*sizeof(ULONG)); 
<BR>+  l_pErrorLogEntry->SequenceNumber = 0; 
<BR>+  l_pErrorLogEntry->MajorFunctionCode = 0; 
<BR>+  l_pErrorLogEntry->IoControlCode  = 0; 
<BR>+  l_pErrorLogEntry->RetryCount  = 0; 
<BR>+  l_pErrorLogEntry->UniqueErrorValue = 
p_unique_error_code; 
<BR>+  l_pErrorLogEntry->FinalStatus  = p_final_status; 
<BR>+<BR>+  /* Insert the data items */<BR>+  for 
(l_nDataItem = 0; l_nDataItem < p_n_data_items; l_nDataItem++) 
<BR>+  { /* Inset a data item */<BR>+<BR>+   /* Current 
data item */<BR>+   int l_CurDataItem 
;<BR>+    <BR>+   /* Get next data item 
*/<BR>+   l_CurDataItem = va_arg( l_Argptr, 
int);<BR>+<BR>+   /* Put it into the data array 
*/<BR>+   l_pErrorLogEntry->DumpData[l_nDataItem] = 
l_CurDataItem ;<BR>+<BR>+  } /* Inset a data item 
*/<BR>+<BR>+  /* add insertion string */<BR>+  if 
(p_insertion_string) {<BR>+   char *ptr; 
<BR>+   int sz = min( l_TotalSize - l_PktSize, l_Size 
);<BR>+   l_pErrorLogEntry->NumberOfStrings = 
1;<BR>+   l_pErrorLogEntry->StringOffset = 
sizeof(IO_ERROR_LOG_PACKET) + 
l_pErrorLogEntry->DumpDataSize;<BR>+   ptr = 
(char*)l_pErrorLogEntry + 
l_pErrorLogEntry->StringOffset;<BR>+   memcpy( ptr, 
p_insertion_string, sz );<BR>+   *(WCHAR*)&ptr[sz - 2] = 
(WCHAR)0;<BR>+  }<BR>+  <BR>+  /* Write the packet 
*/<BR>+  IoWriteErrorLogEntry(l_pErrorLogEntry);<BR>+<BR>+ } /* 
OK */<BR>+<BR>+ /* Term the variable argument list */   
<BR>+ va_end(l_Argptr);<BR>+<BR>+} /* WriteEventLogEntry 
*/<BR>+<BR>+<BR> /*<BR>  * The IO Object required to allocate an event 
log entry is passed in<BR>  * via the "name" parameter.<BR>Index: 
V:/svn/winib/trunk/core/bus/kernel/bus_ev_log.mc<BR>===================================================================<BR>--- 
V:/svn/winib/trunk/core/bus/kernel/bus_ev_log.mc (revision 0)<BR>+++ 
V:/svn/winib/trunk/core/bus/kernel/bus_ev_log.mc (revision 4395)<BR>@@ -0,0 
+1,56 
@@<BR>+;/*++<BR>+;=============================================================================<BR>+;Copyright 
(c) 2009 Mellanox Technologies<BR>+;<BR>+;Module 
Name:<BR>+;<BR>+;    
bus_ev_log.mc<BR>+;<BR>+;Abstract:<BR>+;<BR>+;    IB Driver event 
log messages<BR>+;<BR>+;Authors:<BR>+;<BR>+;    Leonid 
Keller<BR>+;<BR>+;Environment:<BR>+;<BR>+;   Kernel Mode 
.<BR>+;<BR>+;=============================================================================<BR>+;--*/<BR>+;<BR>+MessageIdTypedef 
= NTSTATUS<BR>+<BR>+SeverityNames = (<BR>+ Success   = 
0x0:STATUS_SEVERITY_SUCCESS<BR>+ Informational = 
0x1:STATUS_SEVERITY_INFORMATIONAL<BR>+ Warning   = 
0x2:STATUS_SEVERITY_WARNING<BR>+ Error   = 
0x3:STATUS_SEVERITY_ERROR<BR>+ )<BR>+<BR>+FacilityNames = 
(<BR>+ System   = 0x0<BR>+ RpcRuntime  = 
0x2:FACILITY_RPC_RUNTIME<BR>+ RpcStubs  = 
0x3:FACILITY_RPC_STUBS<BR>+ Io    = 
0x4:FACILITY_IO_ERROR_CODE<BR>+ IBBUS   = 
0x9:FACILITY_IB_ERROR_CODE<BR>+ )<BR>+<BR>+<BR>+MessageId=0x0001 
Facility=IBBUS Severity=Informational 
SymbolicName=EVENT_IBBUS_ANY_INFO<BR>+Language=English<BR>+%2<BR>+.<BR>+<BR>+MessageId=0x0002 
Facility=IBBUS Severity=Warning 
SymbolicName=EVENT_IBBUS_ANY_WARN<BR>+Language=English<BR>+%2<BR>+.<BR>+<BR>+MessageId=0x0003 
Facility=IBBUS Severity=Error 
SymbolicName=EVENT_IBBUS_ANY_ERROR<BR>+Language=English<BR>+%2<BR>+.<BR>+<BR>Index: 
V:/svn/winib/trunk/core/bus/kernel/SOURCES<BR>===================================================================<BR>--- 
V:/svn/winib/trunk/core/bus/kernel/SOURCES (revision 4394)<BR>+++ 
V:/svn/winib/trunk/core/bus/kernel/SOURCES (revision 4395)<BR>@@ -10,16 
+10,18 @@<BR> <BR> <BR> SOURCES= 
ibbus.rc  \<BR>+ bus_ev_log.mc  \<BR>  bus_driver.c  \<BR>  bus_pnp.c   \<BR>  bus_port_mgr.c  \<BR>  bus_iou_mgr.c<BR> <BR>-INCLUDES=..\..\..\inc;..\..\..\inc\kernel;..\..\al;..\..\al\kernel;<BR>+INCLUDES=..\..\..\inc;..\..\..\inc\kernel;..\..\al;..\..\al\kernel;..\..\bus\kernel\$O;<BR> <BR> C_DEFINES=$(C_DEFINES) 
-DDRIVER -DDEPRECATE_DDK_FUNCTIONS -DNEED_CL_OBJ<BR> <BR> TARGETLIBS= 
\<BR>+    $(DDK_LIB_PATH)\ntstrsafe.lib 
\<BR>  $(TARGETPATH)\*\complib.lib 
\<BR>  $(TARGETPATH)\*\ibal.lib<BR>  <BR>Index: 
V:/svn/winib/trunk/core/bus/kernel/ibbus.rc<BR>===================================================================<BR>--- 
V:/svn/winib/trunk/core/bus/kernel/ibbus.rc (revision 4394)<BR>+++ 
V:/svn/winib/trunk/core/bus/kernel/ibbus.rc (revision 4395)<BR>@@ -44,4 
+44,6 @@<BR> #define 
VER_INTERNALNAME_STR  "ibbus.sys"<BR> #define 
VER_ORIGINALFILENAME_STR "ibbus.sys"<BR> <BR>+#include 
"bus_ev_log.rc"<BR>+<BR> #include <common.ver><BR>Index: 
V:/svn/winib/trunk/core/al/kernel/al_mgr.c<BR>===================================================================<BR>--- 
V:/svn/winib/trunk/core/al/kernel/al_mgr.c (revision 4394)<BR>+++ 
V:/svn/winib/trunk/core/al/kernel/al_mgr.c (revision 4395)<BR>@@ -257,7 
+257,8 
@@<BR> ib_api_status_t<BR> ib_register_ca(<BR>  IN  const ci_interface_t*    p_ci,<BR>- IN  const PDEVICE_OBJECT    p_hca_dev<BR>+ IN  const PDEVICE_OBJECT    p_hca_dev,<BR>+ IN  const PDEVICE_OBJECT    p_fdo<BR>  )<BR> {<BR>  ib_api_status_t  status;<BR>@@ 
-285,7 +286,7 @@<BR>  }<BR> <BR>  /* Construct and 
initialize the CA structure. */<BR>- status = create_ci_ca( 
&gp_al_mgr->obj, p_ci, p_hca_dev );<BR>+ status = create_ci_ca( 
&gp_al_mgr->obj, p_ci, p_hca_dev, p_fdo );<BR>  if( status != 
IB_SUCCESS )<BR>  {<BR>   AL_PRINT( TRACE_LEVEL_ERROR, 
AL_DBG_ERROR,<BR>Index: 
V:/svn/winib/trunk/core/al/kernel/SOURCES<BR>===================================================================<BR>--- 
V:/svn/winib/trunk/core/al/kernel/SOURCES (revision 4394)<BR>+++ 
V:/svn/winib/trunk/core/al/kernel/SOURCES (revision 4395)<BR>@@ -56,12 
+56,13 
@@<BR>  ..\ib_common.c   \<BR>  ..\ib_statustext.c<BR> <BR>-INCLUDES=..;..\..\..\inc;..\..\..\inc\kernel;<BR>+INCLUDES=..;..\..\..\inc;..\..\..\inc\kernel;..\..\bus\kernel\$O;<BR> <BR> C_DEFINES=$(C_DEFINES) 
-DDRIVER -DDEPRECATE_DDK_FUNCTIONS 
\<BR>  -DEXPORT_AL_SYMBOLS<BR> <BR> TARGETLIBS= 
\<BR>+    $(DDK_LIB_PATH)\ntstrsafe.lib 
\<BR>  $(TARGETPATH)\*\complib.lib<BR> <BR> !IFDEF 
ENABLE_EVENT_TRACING<BR>Index: 
V:/svn/winib/trunk/core/al/kernel/al_ci_ca.c<BR>===================================================================<BR>--- 
V:/svn/winib/trunk/core/al/kernel/al_ci_ca.c (revision 4394)<BR>+++ 
V:/svn/winib/trunk/core/al/kernel/al_ci_ca.c (revision 4395)<BR>@@ -85,7 
+85,8 
@@<BR> create_ci_ca(<BR>  IN    al_obj_t     *p_parent_obj,<BR>  IN  const ci_interface_t*    p_ci,<BR>- IN  const PDEVICE_OBJECT    p_hca_dev<BR>+ IN  const PDEVICE_OBJECT    p_hca_dev,<BR>+ IN  const PDEVICE_OBJECT    p_fdo<BR>  )<BR> {<BR>  ib_api_status_t   status;<BR>@@ 
-189,8 +190,10 @@<BR>   return 
status;<BR>  }<BR> <BR>+<BR>  /* store HCA device 
object into CA object */<BR>  p_ci_ca->h_ca->p_hca_dev = 
p_hca_dev;<BR>+ p_ci_ca->h_ca->p_fdo = 
p_fdo;<BR>  <BR>  /* Get a list of the port GUIDs on this CI 
CA. */<BR>  status = get_port_info( p_ci_ca );<BR>Index: 
V:/svn/winib/trunk/core/al/al_ca.h<BR>===================================================================<BR>--- 
V:/svn/winib/trunk/core/al/al_ca.h (revision 4394)<BR>+++ 
V:/svn/winib/trunk/core/al/al_ca.h (revision 4395)<BR>@@ -51,6 +51,7 
@@<BR> #if 
defined(CL_KERNEL)<BR>  ib_ca_handle_t   h_um_ca;<BR>  PDEVICE_OBJECT   p_hca_dev;<BR>+ PDEVICE_OBJECT   p_fdo;<BR> #endif<BR> <BR> } ib_ca_t;<BR>Index: 
V:/svn/winib/trunk/core/al/al_ci_ca.h<BR>===================================================================<BR>--- 
V:/svn/winib/trunk/core/al/al_ci_ca.h (revision 4394)<BR>+++ 
V:/svn/winib/trunk/core/al/al_ci_ca.h (revision 4395)<BR>@@ -57,7 +57,8 
@@<BR> create_ci_ca(<BR>  IN    al_obj_t     *p_parent_obj,<BR>  IN  const ci_interface_t*    p_ci,<BR>- IN  const PDEVICE_OBJECT    p_hca_dev<BR>+ IN  const PDEVICE_OBJECT    p_hca_dev,<BR>+ IN  const PDEVICE_OBJECT    p_fdo<BR>  );<BR> <BR> DEVICE_OBJECT*<BR>Index: 
V:/svn/winib/trunk/inc/kernel/iba/ib_ci_ifc.h<BR>===================================================================<BR>--- 
V:/svn/winib/trunk/inc/kernel/iba/ib_ci_ifc.h (revision 4394)<BR>+++ 
V:/svn/winib/trunk/inc/kernel/iba/ib_ci_ifc.h (revision 4395)<BR>@@ -56,7 
+56,8 @@<BR> typedef 
ib_api_status_t<BR> (*ib_pfn_register_ca_t)(<BR>  IN  const ci_interface_t* 
const  p_ci,<BR>- IN  const PDEVICE_OBJECT    p_hca_dev<BR>+ IN  const PDEVICE_OBJECT    p_hca_dev,<BR>+ IN  const PDEVICE_OBJECT    p_fdo<BR>  );<BR> <BR> <BR>Index: 
V:/svn/winib/trunk/inc/complib/cl_log.h<BR>===================================================================<BR>--- 
V:/svn/winib/trunk/inc/complib/cl_log.h (revision 4394)<BR>+++ 
V:/svn/winib/trunk/inc/complib/cl_log.h (revision 4395)<BR>@@ -43,7 +43,6 
@@<BR> #ifndef _CL_LOG_H_<BR> #define 
_CL_LOG_H_<BR> <BR>-<BR> #include 
<complib/cl_types.h><BR> <BR> <BR>@@ -147,9 +146,99 
@@<BR> *********/<BR> <BR> <BR>+/****f* Component Library: Debug 
Output/cl_msg_out<BR>+* NAME<BR>+* cl_event_log_write<BR>+*<BR>+* 
DESCRIPTION<BR>+* The cl_event_log_write function sends a message to System 
Event Logger.<BR>+*<BR>+* SYNOPSIS<BR>+*/<BR>+CL_EXPORT 
void<BR>+cl_event_log_write(<BR>+ PVOID p_io_object,<BR>+ ULONG p_error_code,<BR>+ ULONG p_unique_error_code,<BR>+ ULONG p_final_status,<BR>+ PWCHAR p_insertion_string,<BR>+ ULONG p_n_data_items,<BR>+  ...<BR>+  );<BR>+/*<BR>+* 
PARAMETERS<BR>+* p_io_object<BR>+*  [in] The IO object ( driver 
object or device object 
).<BR>+* <BR>+* p_error_code<BR>+*  [in] The error 
code.<BR>+*<BR>+* p_unique_error_code<BR>+*  [in] A specific 
error code.<BR>+*<BR>+* p_final_status<BR>+*  [in] The final 
status.<BR>+*<BR>+* p_insertion_string<BR>+*  [in] String to 
print.<BR>+*<BR>+* p_n_data_items<BR>+*  [in] Number of data 
items<BR>+*<BR>+* ...<BR>+*  [in] data items values<BR>+*<BR>+* 
RETURN VALUE<BR>+* This function does not return a value.<BR>+*<BR>+* 
NOTES<BR>+* cl_event_log_write is available in both debug and release 
builds.<BR>+*<BR>+* The function uses IoAllocateErrorLogEntry and 
IoWriteErrorLogEntry<BR>+* functions to send data to System Event 
Log.<BR>+*<BR>+* SEE ALSO<BR>+* <BR>+*********/<BR>+<BR> #ifdef 
__cplusplus<BR> }<BR> #endif<BR> <BR>+#ifdef 
CL_KERNEL<BR>+#include <ntddk.h><BR>+#define NTSTRSAFE_LIB<BR>+#include 
<ntstrsafe.h><BR> <BR>+#define 
CL_LOG_BUF_LEN  512<BR>+extern WCHAR g_cl_wlog[ CL_LOG_BUF_LEN ]; 
<BR>+extern UCHAR g_cl_slog[ CL_LOG_BUF_LEN ]; <BR>+<BR>+static void 
__build_str( const char * format, ... )<BR>+{<BR>+ NTSTATUS 
status;<BR>+ va_list p_arg;<BR>+ va_start(p_arg, 
format);<BR>+ status = RtlStringCbVPrintfA((char *)g_cl_slog, 
sizeof(g_cl_slog), format , p_arg);<BR>+ if (status)<BR>+  goto 
end;<BR>+ status = RtlStringCchPrintfW(g_cl_wlog, 
sizeof(g_cl_wlog)/sizeof(g_cl_wlog[0]), L"%S", g_cl_slog);<BR>+ if 
(status)<BR>+  goto 
end;<BR>+end:<BR>+ va_end(p_arg);<BR>+}<BR>+<BR>+#define 
CL_PRINT_TO_EVENT_LOG(_obj_,_event_id_,_msg_)  \<BR>+ { 
\<BR>+  NTSTATUS event_id = _event_id_; \<BR>+  __build_str 
_msg_; \<BR>+  cl_event_log_write( _obj_, (ULONG)event_id, 0, 0, 
g_cl_wlog, 0, 0 ); \<BR>+ }<BR>+#else<BR>+<BR>+#define 
CL_PRINT_TO_EVENT_LOG(_obj_,_event_id_,_msg_)<BR>+<BR>+#endif<BR>+<BR> #endif /* 
_CL_LOG_H_ */<BR>Index: 
V:/svn/winib/trunk/inc/iba/ib_ci.h<BR>===================================================================<BR>--- 
V:/svn/winib/trunk/inc/iba/ib_ci.h (revision 4394)<BR>+++ 
V:/svn/winib/trunk/inc/iba/ib_ci.h (revision 4395)<BR>@@ -2937,7 +2937,8 
@@<BR> AL_EXPORT ib_api_status_t<BR> ib_register_ca 
(<BR>  IN  const ci_interface_t*    p_ci,<BR>- IN  const PDEVICE_OBJECT    p_hca_dev<BR>+ IN  const PDEVICE_OBJECT    p_hca_dev,<BR>+ IN  const PDEVICE_OBJECT    p_fdo<BR>  );<BR> /*<BR> * 
DESCRIPTION<BR>@@ -2954,6 +2955,8 @@<BR> *  vector to support 
verbs functionality.<BR> * p_hca_dev<BR> *  PDO of HCA 
device<BR>+* p_fdo<BR>+*  FDO of IBBUS 
device<BR> *<BR> * RETURN VALUE<BR> * IB_SUCCESS<BR>Index: 
V:/svn/winib/trunk/hw/mlx4/kernel/hca/mlx4_hca.inx<BR>===================================================================<BR>--- 
V:/svn/winib/trunk/hw/mlx4/kernel/hca/mlx4_hca.inx (revision 4394)<BR>+++ 
V:/svn/winib/trunk/hw/mlx4/kernel/hca/mlx4_hca.inx (revision 4395)<BR>@@ 
-177,19 +177,19 
@@<BR> <BR> [MLX4HCA.DDInstall.ntx86.Services]<BR> AddService = 
mlx4_hca,%SPSVCINST_ASSOCSERVICE%,MLX4HCA.ServiceInstall,MLX4HCA.EventLog<BR>-AddService 
= ibbus,,Ibbus.ServiceInstall<BR>+AddService = 
ibbus,,Ibbus.ServiceInstall,IBBUS.EventLog<BR> AddService = 
WinVerbs,,WinVerbs.ServiceInstall<BR> AddService = 
WinMad,,WinMad.ServiceInstall<BR> <BR> [MLX4HCA.DDInstall.ntamd64.Services]<BR> AddService 

mlx4_hca,%SPSVCINST_ASSOCSERVICE%,MLX4HCA.ServiceInstall,MLX4HCA.EventLog<BR>-AddService 
= ibbus,,Ibbus.ServiceInstall<BR>+AddService = 
ibbus,,Ibbus.ServiceInstall,IBBUS.EventLog<BR> AddService = 
WinVerbs,,WinVerbs.ServiceInstall<BR> AddService = 
WinMad,,WinMad.ServiceInstall<BR> <BR> [MLX4HCA.DDInstall.ntia64.Services]<BR> AddService 

mlx4_hca,%SPSVCINST_ASSOCSERVICE%,MLX4HCA.ServiceInstall,MLX4HCA.EventLog<BR>-AddService 
= ibbus,,Ibbus.ServiceInstall<BR>+AddService = 
ibbus,,Ibbus.ServiceInstall,IBBUS.EventLog<BR> AddService = 
WinVerbs,,WinVerbs.ServiceInstall<BR> AddService = 
WinMad,,WinMad.ServiceInstall<BR> <BR>@@ -282,6 +282,14 
@@<BR> AddReg          = 
Ibbus.ParamsReg<BR> Dependencies = 
mlx4_hca<BR> <BR>+[IBBUS.EventLog]<BR>+AddReg = 
IBBUS.AddEventLogReg<BR>+<BR>+[IBBUS.AddEventLogReg]<BR>+HKR, , 
EventMessageFile, 0x00020000, 
"%%SystemRoot%%\System32\IoLogMsg.dll;%%SystemRoot%%\System32\drivers\ibbus.sys"<BR>+HKR, 
, TypesSupported,   0x00010001, 
7<BR>+<BR>+<BR> [Ibbus.ParamsReg]<BR> HKR,"Parameters","IbalDebugLevel",%REG_DWORD%,2<BR> HKR,"Parameters","IbalDebugFlags",%REG_DWORD%,0x00ffffff<BR></FONT></DIV></BODY></HTML>