title: Closing timers handle from the working thread
body: <p>best way to ask a question is to first show an example:</p>
  
  <p>this is how i create a timer in c++:</p>
  
  <pre><code>        if (FALSE == CreateTimerQueueTimer(&amp;m_hSampleStarvationTimer,
                                              m_hSampleStarvationTimerQueue,
                                              (WAITORTIMERCALLBACK)TsSampleStarvationTimeBomb_Static,
                                              (LPVOID)this,
                                              dwDueTime,
                                              0,
                                              WT_EXECUTEONLYONCE))
  </code></pre>
  
  <p>once the following callback is triggered(TsSampleStarvationTimeBomb_Static), i try to kill both the queue handle and timer's handle inside that particular thread.</p>
  
  <pre><code>void CALLBACK CCaptureChannel::TsSampleStarvationTimeBomb_Static(LPVOID lpArg, BOOLEAN TimerOrWaitFired)
      {
          HRESULT hr;
          BOOL    bHandleDeletion          = FALSE;
          CCaptureChannel* pCaptureChannel = (CCaptureChannel*)lpArg;
  
          ATLASSERT(pCaptureChannel);
  
          bHandleDeletion = DeleteTimerQueueTimer(pCaptureChannel-&gt;m_hSampleStarvationTimerQueue, pCaptureChannel-&gt;m_hSampleStarvationTimer, NULL);
          bHandleDeletion = DeleteTimerQueue(pCaptureChannel-&gt;m_hSampleStarvationTimerQueue);
  </code></pre>
  
  <p>my question is: is it valid? i read over MSDN that the following deletion functions may return i/o errors which shouldn't concern me too much. their termination will be executed once the callback thread turns signled, automatically.</p>
  
  <p>am i right?
  Thanks!</p>