ミリ秒を知りたい

ファイルに名前つけるときに、そのときの時刻をファイル名にしたりします。

2010/7/30 12:34:56 なら、20100730123456.log とかね。

今まで CTime::GetCurrentTime() で取得した値を Format して使ってたのですが、一秒間に複数回ファイルを吐く必要があるときなんかに、ファイル名が重複して、一意性が保てなくなったりします。
じゃ、ミリ秒までとればいいべ、ってことで、ミリ秒のとりかた。
CTime さんじゃ無理みたい。SYSTEMTIME って構造体を使うらしい。

typedef struct _SYSTEMTIME {
   WORD wYear;
   WORD wMonth;
   WORD wDayOfWeek;
   WORD wDay;
   WORD wHour;
   WORD wMinute;
   WORD wSecond;
   WORD wMilliseconds;
} SYSTEMTIME;

使い方は例えばこんな感じ。

SYSTEMTIME st;
GetSystemTime(&st);
CString strNow;
strNow.Format(_T("%04hu%02hu%02hu%02hu%02hu%02hu%03hu"),
    st.wYear, st.wMonth, st.wDay,
    st.wHour + 9, st.wMinute, st.wSecond, st.wMilliseconds);

マイクロ秒の取り方もあったりするのかしらね。