私は、ファイルのユニークな識別子を取得するために、2009年に書かれたhereと非常に似たソリューションを実装する必要があります。具体的には、私は答えのApproachB()
機能で探していて、次の行(新しいC#の機能を反映するために再書かれたビット):ハンドル(IntPtr)kernel32.dll、SafeFileHandle to IntPtr
var fi = new FileInfo(@"C:\Temp\testfile.txt");
var fs = fi.Open(FileMode.Open,FileAccess.Read,FileShare.ReadWrite);
WinAPI.GetFileInformationByHandle(fs.Handle, out objectFileInfo); // fs.Handle being the portion in question
問題、ここでは、からの輸入extern
機能へのGetFileInformationByHandleマップです"kernel32.dll"。以下の通りのシグネチャは、次のとおり
[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool GetFileInformationByHandle(IntPtr hFile, out BY_HANDLE_FILE_INFORMATION lpFileInformation);
種類以上の連結doc.s HANDLE
で指定されたタイプのウェルIntPtr
マップ。ただしFileStream
オブジェクトのHandle
プロパティは廃止され(obsoleteとなりました)、SafeFileHandle
に置き換えられました。はにマップされていません。にマップされています。
これは、extern
の定義でタイプSafeFileHandle
を受け入れることができる場所を克服する方法がありますか?または、この目的のために別のextern
メソッドが実装されていますか?