CDI_Blocking_Execute_HACB
Initiates the execution of a HACB not associated with a CDM message by issuing it to a 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.
LONG CDI_Blocking_Execute_HACB ( LONG npaBusID, LONG hacbPutHandle );
The following table lists return values and descriptions.
This functions is used if the CDM must issue multiple HACBs to the HAM to complete a single CDM message request. It must be called from a blocking thread. Typically, a CDM uses CDI_Blocking_Execute_HACB within the context of CDM_Inquiry, also a blocking thread, to test a device to see if it should bind to the device. CDI_Blocking_Execute_HACB causes the OS to treat the current thread as if it were the current process. This ensures that a request is carried to completion, and instructions immediately following this call can expect the request data to be present. Consequently, since CDI_Blocking_Execute_HACB runs a HACB request to completion, a callback is not necessary unlike the requirement for its non-blocking counterpart, CDI_Execute_HACB.
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.