フォルダのファイルとディレクトリを非常に高速に再帰的にスキャンするライブラリを使用しています。出力はList<WIN32_FIND_DATAW>
です。スタクトの内容を確認するには、ここをクリックしてください。
次の拡張メソッドを使用して、FILETIMEをDateTimeに変換することができました。
public static DateTime convertToDateTime(this System.Runtime.InteropServices.ComTypes.FILETIME time)
{
ulong high = (ulong)time.dwHighDateTime;
int low = time.dwLowDateTime;
uint uLow = (uint)low;
high = high << 32;
return DateTime.FromFileTime((long)(high | (ulong)uLow));
}
そして私はファイルサイズを次のように取得します:
(UInt64)((nFileSizeHigh * (2 ^ 32)) + nFileSizeLow);
オンラインでそれらの方法がどこにあるか思い出せないことがわかりました。
とにかく、ライブラリにはWIN32_FIND_DATAのリストを必要とするメソッドが含まれています。そのメソッドを呼び出したいのですが、WIN32_FIND_DATAオブジェクトを作成する方法がわかりません
これは、C:\ドライブを反復処理したときに作成されたランダムなWIN32_FIND_DATAオブジェクトです。
どうすれば同じオブジェクトを作成できますか?cAlternateNameを取得する方法はわかりませんが、必要ないと思います。戻ってDateTimeをFILETIMEに変換する方法がわかりません。最後に、ファイルサイズをnFileSizeHighとnFileSizeLowに変換する方法がわかりません。
ライブラリは、WIN32_FIND_DATAWオブジェクトを構成するためにこのメソッドを使用しました。
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern IntPtr FindFirstFileW(string lpFileName, out WIN32_FIND_DATAW lpFindFileData);
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
public static extern bool FindNextFile(IntPtr hFindFile, out WIN32_FIND_DATAW lpFindFileData);
[DllImport("kernel32.dll")]
public static extern bool FindClose(IntPtr hFindFile);
たぶんpublic static extern bool FindFile(IntPtr hFindFile, out WIN32_FIND_DATAW lpFindFileData);
方法があります。必要なWIN32_FIND_DATAWオブジェクトを作成できるようにします。
編集
要するに、ファイルのフルパスを使用してWIN32_FIND_DATAWオブジェクトを作成したいのです。