0
typedef struct _FILETIME {
  DWORD dwLowDateTime;
  DWORD dwHighDateTime;
} FILETIME, *PFILETIME;

低い日付時刻と高いデータ時刻に格納される時間の部分は? コンピュータにどのように保存され、64ビット整数でどのように表示されるか。

たとえば、私が持っている場合2012-06-18 09:45:03.180

2 つのファイル時間を減算する必要があるため、int64 に変換して減算していますが、これは正しい方法ですか?

4

4 に答える 4

1

まとめて、1601年1月1日の12:00AMUTC以降の100ナノ秒ユニットの数を表す64ビット値を形成しますdwHighDateTimedwLowDateTime

FILETIME構造体の値を直接読み書きしないでください。それらの値にアクセスするには、FileTimeToSystemTimeなどの関数を使用する必要があります。

于 2012-06-18T10:46:44.533 に答える
0

構造はここで十分に文書化されています。抜粋:

FILETIME構造体は、1601年1月1日(UTC)以降の100ナノ秒間隔の数を表す64ビット値です。

2つのDWORDは、自分で計算するべきではないため、構造を定義するために使用されます。参照されているMSDNの記事の「備考」セクションを参照してください。

于 2012-06-18T10:46:38.987 に答える
0

FILETIME構造

1601年1月1日(UTC)以降の100ナノ秒間隔の数を表す64ビット値が含まれています。

例については、SystemTimeToFileTime関数を参照してください。

于 2012-06-18T10:46:40.913 に答える
0

MSDNによると、FILETIMEは1601年1月1日(UTC)以降の100ナノ秒間隔の数です。したがって、約150183日、9時間、45分、3秒、18万の例では、次のようになります。

  • 0x779C70C0(低)
  • 0x01CCFEA2(高)

編集:あなたが言うように、変換__int64と減算はうまく機能します。

于 2012-06-18T10:56:22.233 に答える