2

ソケットを使用してダウンロードした後、ファイルの作成時間を設定する必要があります。CFでは、FileInfo.CreationTimeは読み取り専用です。このトピックのP/Invokeソリューションを使用しようとしましたが、機能しません。エラー6(無効なハンドル)が発生します。

MSDNによると、SetFileTime()の最初のパラメーターはハンドルである必要がありますが、前述のトピックでは文字列であり、誰かが彼のために機能すると言っています。私は何が間違っているのですか?ハンドルを使用する必要がある場合、CFでこのハンドルを取得するにはどうすればよいですか?また、SetFileTime()宣言を変更するにはどうすればよいですか?

4

1 に答える 1

0

面白い。あなたが指摘する答えは、受け入れられたものの、明らかに間違っています。

いずれにせよ、CreateFileの呼び出しから返されるHANDLE(IntPtrまたはそれを表現したい場合)を渡す必要があります。これもP/Invokeする必要があります

[DllImport("coredll.dll")] 
private static extern bool SetFileTime(IntPtr fileHandle, 
                                  ref long creationTime, 
                                  ref long lastAccessTime, 
                                  ref long lastWriteTime); 

完了したら、必ずCloseHandleを呼び出してください。

于 2012-10-23T17:52:04.557 に答える