title: Please explain !SyncBlk the windbg command
body: <p>Firstly, is there a command for getting help and parameters for each sos command in <code>windbg</code>?</p>
  
  <p>Secondly, I'd like to understand <code>!syncblk</code> output</p>
  
  <pre><code>Index SyncBlock MonitorHeld Recursion Owning Thread Info  SyncBlock Owner
    201 05b9493c          979         1 05bc1040   bcc  45   022f3490 System.Collections.ArrayList
   2875 05b4c914            1         1 17b99e10  1af8 290   024862d8 MyClass
   2945 05b4b66c            1         1 17d1a290  12c0 752   02482940 MyClass
  </code></pre>
  
  <p><code>MonitorHeld</code> shows # of monitor held by the <code>synblk</code>. 1 for write and 2 for read, but what does the rest of column means?</p>
  
  <p>Say I have a C# code</p>
  
  <pre><code>MyClass MyObj;
  MyObj = new MyClass();
  </code></pre>
  
  <p>Now if I do </p>
  
  <pre><code>lock (MyObj)
  {
  }
  </code></pre>
  
  <p>Will the <code>syncblk</code> owner column show "MyClass" ?
  Similarly when I run this <code>!SyncBlk</code> command, what exactly is it showing me? Is it showing me the number of <code>lock()</code> and <code>Monitor.Enter</code> and <code>Mutex</code>() and other locking mechanisms?</p>