6.11  Unsolicited Event Handling

During the course of a telephonic session, the WAN miniport NIC driver will most likely need to notify the NDISTAPI driver of unsolicited events. Typical examples of unsolicited events are an incoming call on an open line, a state transition on an existing call (for example, from ringing to connected), or a change in line-device status (from in-service to out-of-service or vice versa).

The NDIS_STATUS_TAPI_INDICATION status is used when reporting spontaneously occurring events on the line or on a call on the line to the NDISTAPI driver. The miniport calls NdisMIndicateStatus, specifying a GeneralStatus of NDIS_STATUS_TAPI_INDICATION and a StatusBuffer parameter which points to an initialized structure of type NDIS_TAPI_EVENT.

This structure contains the following members:

Structure Member Meaning
htLine Specifies the NDISTAPI driver’s handle for the line on which the event occurred.
htCall For line-related events where there is no call, this parameter should be zero; otherwise, it is the NDISTAPI driver’s handle for the call related to the reported event.
ulMsg Specifies the event type, of the form LINE_XXX.
ulParam1 An event-specific parameter, for instance, a pointer to a structure that describes the specific event.
ulParam2 Same as above.
ulParam3 Same as above.

The notification messages of concern to miniport developers are the following:

·LINE_ADDRESSSTATE

·LINE_CALLINFO

·LINE_CALLSTATE

·LINE_CLOSE

·LINE_DEVSPECIFIC

·LINE_LINEDEVSTATE

·LINE_NEWCALL

·LINE_CALLDEVSPECIFIC