SRB_INDICATE_MASTER_CLOCK

The class driver issues this request to indicate to a stream the handle for the clock object that now serves as its master clock, or a zero handle to indicate the stream is free running.

Return Value

The minidriver should set one of the following as the status in the SRB:

STATUS_SUCCESS
Indicates successful completion of the command.

STATUS_NOT_IMPLEMENTED
Indicates that the function is not supported by the minidriver.

STATUS_IO_DEVICE_ERROR
Indicates that a hardware failure occurred.

Comments

The class driver sets the CommandData.MasterClockHandle member pointed to by pSrb to the handle for the clock object that represents the master clock. The pSrb pointer points to a HW_STREAM_REQUEST_BLOCK structure.

A stream may query the time value of the master clock by passing the master clock handle to StreamClassQueryMasterClock or StreamClassQueryMasterClockSync.

Until the minidriver receives a SRB_INDICATE_MASTER_CLOCK for a particular stream, it can assume that the stream is free running. If the handle passed in this SRB for a subordinate pin is the same as the handle passed to the minidriver in SRB_OPEN_MASTER_CLOCK, the minidriver can read the time directly from the master clock because it controls the master and the subordinate.

The minidriver should retain the CommandData.MasterClockHandle field in the SRB that points to the handle for the master clock. If this handle is zero, it indicates to the minidriver that this stream is now free running and cannot be subordinate to a master clock.