Multiple requests may be posted to the timer driver. For example, you can make three timer requests in a row: Signal me in 20 seconds (request 1) Signal me in 30 seconds (request 2) Signal me in 10 seconds (request 3) As the timer queues these requests, it changes the time values and sorts the timer requests to service each request at the desired interval, resulting effectively in the following order: (request 3) in now+10 seconds (request 1) 10 seconds after request 3 is satisfied (request 2) 10 seconds after request 1 is satisfied If you wish to send out multiple timer requests, you have to create multiple request blocks. You can do this by allocating memory for each timerequest you need and filling in the appropriate fields with command data. Some fields are initialized by the call to the OpenDevice() function. So, for convenience, you may allocate memory for the timerequest you need, call OpenDevice() with one of them, and then copy the initialized fields into all the other timerequest. It is also permissible to open the timer device multiple times. In some cases this may be easier than opening it once and using multiple requests. When multiple requests are given, SendIO() should be used to transmit each one to the timer. Multiple_Timers.c If all goes according to plan, TimerIO[1] will finish first, TimerIO[2] will finish next, and TimerIO[0] will finish last.