クリティカルセクションを使って同期をとっているんですがロックをネストさせた場合正常に機能しますか?

CRITICAL_SECTION critical;

void f1()
{
  EnterCriticalSection(&critical);    // �@
  // ここで何か処理をする
  LeaveCriticalSection(&critical);    // �A
}

void f2()
{
  EnterCriticalSection(&critical);    // �B
  f1();
  // ここで何か処理をする
  LeaveCriticalSection(&critical);    // �C
}

こういうプログラムの場合に f2() を呼び出した場合
�B�@�A�Cの順番で実行されますが�Cまでロックした状態は維持されますか?
�Aの時点で解除されませんか?

自分で試せってのは無しでお願いします。
試そうと思ったのですがどうやって試したらいいのか分かりません。
それっぽいプログラムを作ってみたら見た目ではうまく動いているようですが
本当に同期がとれているかは謎です。
教えてください。