CDI_Non_Blocking_Execute_HACB

Initiates non-blocking execution of a HACB not associated with a CDM message by issuing it to a HAM. This function also allows the CDM to issue AEN HACBs to the HAM. It can also be used to initiate execution of a HACB associated with a queued CDM message outside the context of CDM_Execute_CDMMessage.

Thread Context:Non-Blocking

Syntax

    LONG CDI_Non_Blocking_Execute_HACB (
       LONG   npaBusID,
       LONG   hacbPutHandle,
       LONG   (*CDM_Callback)()
       );
    
    

Parameters

npaBusID
(IN) The object ID that NWPA assigned to the target bus in its object database. The CDM received this ID through its CDM_Inquiry entry point, during which it bound to the device.
hacbPutHandle
(IN) Handle to the HACB request being issued. The value of this parameter is obtained from the hacbPutHandle field of the original SuperHACB's member HACB.
CDM_Callback
(IN) Address of the CDM function to be called when the HACB request completes. A callback function must be specified for each issued request.

Return Values

The following table lists return values and descriptions.

zero

Successful

nonzero

Unsuccessful

Remarks

The main purpose of CDI_Non_Blocking_Execute_HACB is to be used by a CDM to issue Asynchronous Event Notification (AEN) HACBs to the HAM. The CDM indicates which device it wants the AEN to monitor by placing the appropriate handle in the HACB's deviceHandle field. For more information about AEN HACBs, refer to Section 3.4, Asynchronous Event Notification.

If this function is used to initiate execution of a queued message, the entity that queued the message must maintain responsibility to handle aborts for the queued message if necessary. This means that if an abort is issued on this message, the queuing entity (usually the CDM) is responsible to abort the message and correctly handle any processes, tasks, etc. that were issued as a result of this message being received, then return the appropriate abort completion code. This responsibility continues until the message is completed via CDI_Complete_Message.