Int 2F Fn C000 - Novell Netware Event Service Layer (nesl) 1.0 - Install [N]
AX = C000h
Return: AL = FFh if installed
DX:BX -> FAR entry point (see #2697,#2698,#2699,#2700,#2701,#2702)
ES:SI -> signature string "NESL_EVENTS"
Program: NESL is a generic interface for event handling in ODI drivers and
other NetWare-oriented modules. Primarily intended to support
power management and "hot swapping" of PCMCIA cards, but it is not
limited to this.
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
See Also: AX=C000h"Link Support Layer",AX=C000h"NETWARN"
(Table 2697)
Call NESL function GetNESLConfigPointer with:
BX = 0000h
Return: AX = completion code (0000h,8008h) (see #2703)
ES:SI -> NESL configuration table if successful (see #2704)
BP,DS,STACK preserved
Desc: Obtain a pointer to the NESL Configuration Table
See Also: #2698,#2701
(Table 2698)
Call NESL function RegisterEventProducer with:
BX = 0001h
ES:SI -> Producer Event Control Block (PECB) (see #2705)
Return: AX = completion code (0000h, 8005h, 8008h) (see #2703)
ES:SI -> still points to PECB
BP,DS,STACK preserved
Desc: Allows a module to register as a producer of a given event class
Note: PECB_ClassName and PECB_Flags must be filled in on entry
See Also: #2556,#2699,#2700,#2701
(Table 2699)
Call NESL function DeRegisterEventProducer with:
BX = 0002h
ES:SI -> PECB previously passed to RegisterEventProducer (see #2705)
Return: AX = completion code (0000h, 8002h, 8008h) (see #2703)
ES:SI -> still points to PECB
BP,DS,STACK preserved
Desc: Allows a module to de-register as a producer of a given event class
See Also: #2698,#2702
(Table 2700)
Call NESL function EventNotification with:
BX = 0003h
ES:SI -> PECB previously registered (see #2705)
Return: AX = completion code (0h, 8005h, 8008h) (see #2703)
ES:SI -> still points to PECB
BP,DS,STACK preserved
Desc: Allows a module to signal that an event has just occurred in a given
event class.
Notes: Once called, NESL will generate corresponding callouts for this
event, as described in Table #2707.
on entry, the PECB_DataPtr must point at an Event Parameter Block (EPB)
(see #2708) filled in to match the desired event
See Also: #2698
(Table 2701)
Call NESL function RegisterEventConsumer with:
BX = 0004h
ES:SI -> Consumer Event Control Block (CECB) (see #2706)
Return: AX = completion code (0h, 8005h, 8008h) (see #2703)
ES:SI -> still points to CECB
BP,DS,STACK preserved
Desc: Allows a module to register as a consumer of a given event class
Note: on entry, the CECB_ClassName, CECB_NotifProc and CECB_OSILevel must be
filled in.
See Also: #2698,#2702
(Table 2702)
Call NESL function DeRegisterEventConsumer with:
BX = 0005h
ES:SI -> CECB previously passed to RegisterEventConsumer (see #2706)
Return: AX = completion code (0h, 8002h, 8008h) (see #2703)
ES:SI -> still points to CECB
BP,DS,STACK preserved
Desc: Allows a module to de-register as a consumer of a given event class
See Also: #2699,#2701
(Table 2703)
Values for NESL Error code:
0000h Successful
8002h Bad Parameter
8005h Fail
8008h Bad Command
Format of NESL Configuration Table:
Offset Size Description (Table 2704)
00h WORD NESL_Cfg_MajVer Major Version of this table (=1)
02h WORD NESL_Cfg_MinVer Minor Version of this table (=0)
04h DWORD NESL_Cfg_ModLName -> ASCIZ long name of NESL module
(typically -> "NetWare Event Service Layer for 16-Bit DOS")
08h DWORD NESL_Cfg_ModSName -> ASCIZ short name of NESL module
(typically -> "NESL")
0Ch WORD NESL_Cfg_ModMajVer Major Version of NESL itself (=1)
0Eh WORD NESL_Cfg_ModMinVer Minor Version of NESL itself (=0)
Format of NESL Producer Event Control Block (PECB):
Offset Size Description (Table 2705)
00h WORD PECB_MajVer Major Version of this structure (=1)
02h WORD PECB_MinVer Minor Version of this structure (=0)
04h DWORD PECB_NextProducer -> next PECB. NULL if last.
08h DWORD PECB_ClassName -> ASCIZ string identifying event
class (see #2709)
0Ch DWORD PECB_ConsumerList -> list of consumers for this event class
10h DWORD PECB_DataPtr -> points to additional data during events
14h DWORD PECB_Flags
Bit 0 =0 consumers should be called "top down" for this
event class. (OSI level 7 down to OSI level 1)
=1 consumers should be called "bottom up"
Bits 1-31 Reserved =0
18h 8 BYTEs PECB_Reserved (all zeros)
Note: Although the event producer provides the memory for the PECB, the
NESL module controls this memory until the event class is
de-registered.
While owned by NESL, this structure should be treated as read-only,
except for the PECB_DataPtr field.
Format of NESL Consumer Event Control Block (CECB):
Offset Size Description (Table 2706)
00h WORD CECB_MajVer Major Version of this structure (=1)
02h WORD CECB_MinVer Minor Version of this structure (=0)
04h DWORD CECB_NextConsumer -> next CECB. NULL if last.
08h DWORD CECB_ClassName -> ASCIZ string identifying event
class (see #2709)
0Ch DWORD CECB_NotifProc -> FAR CALL event handler (see #2707)
10h WORD CECB_OSILevel
Bits 4-7 = OSI Layer of this module (1 through 7)
Bits 0-3 = relative ordering with other modules on same layer
13h 14 BYTEs CECB_Reserved (all zeros)
Note: Although the event consumer provides the memory for the CECB, the
NESL module controls this memory until the consumer is de-registered.
While owned by NESL, this structure should be treated as read-only,
(Table 2707)
Values NESL Consumer Notification Procedure is called with:
ES:SI -> Event Parameter Block (EPB) (see #2708)
Return: AX = completion code (0000h, 8005h) (see #2703)
ES:SI -> still points to EPB
Desc: Called by NESL to notify the consumer when an event has occurred in
an event class for which it has registered.
See Also: #2706
Format of NESL Event Parameter Block (EPB):
Offset Size Description (Table 2708)
00h WORD EPB_MajVer Major Version of this structure (=1)
02h WORD EPB_MinVer Minor Version of this structure (=0)
04h DWORD EPB_ClassName -> ASCIZ string identifying event class
(see #2709)
08h DWORD EPB_EventName -> ASCIZ string identifying event within
class (see #2710)
0Ch DWORD EPB_ModuleName -> ASCIZ string identifying module
producing event
10h DWORD EPB_DataPtr0 -> event-defined data or NULL if not used
14h DWORD EPB_DataPtr1 -> event-defined data or NULL if not used
18h 8 BYTEs EPB_Reserved (all zeros)
(Table 2709)
Values for NESL Event Class Names:
Event Class Description
------------------- -----------------------------------------
Service Suspend Suspension of a service. Called top-down.
Service Resume Resumption/availability of a service. Called bottom-up.
Service/Status Change Change in status or level of service. Called top-down.
Suspend Request Request to suspend a service. Called bottom-up.
Note: Contact Novell Labs to register new event classes.
(Table 2710)
Values for NESL Event Names:
Event Name Class Description
-------------------------- ------------- ---------------------------
MLID Cable Disconnect Service Suspend Cable disconnected from NIC
MLID Card Removal Service Suspend PCMCIA card removed
MLID Hardware Failure Service Suspend Serious hardware
failure in NIC
MLID Not In Range Service Suspend Wireless access point
is out of range
MLID Shutdown Service Suspend MLID was shut down
MLID Media Access Denied Service Suspend Access to physical
medium unsuccessful
MLID Cable Reconnect Service Resume Cable re-connected to NIC
MLID Card Insertion Complete Service Resume PCMCIA card inserted
MLID In Range Service Resume Wireless access point
in range
MLID Reset Service Resume MLID was just reset
MLID Access Point Change Serv/Status Change Station has moved to
new access point
MLID Speed Change Serv/Status Change Change in communic. speed
Note: Contact Novell Labs to register new event names.
For all predefined events above, EPB_DataPtr0 (see #2708) points
to the MLID Configuration table (see AX=C000h"ODI") for the
affected MLID.