- - PR -
ファイルハンドルからファイル名の取得について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-09-14 15:16
お世話になっております。
CreateFile が返したオブジェクトハンドルからファイル名を取得することは出来るのでしょうか? hFile = CreateFile("c:\test.txt", GENERIC_READ, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); hFileオブジェクトハンドルからファイル名(c:\test.txt)を取得するAPIは存在するのでしょうか? getFileSize APIを使用することで、ファイルサイズを取得出来るのはわかったのですが、ファイル名を取得するにはどのAPIを使用すればよいのかが調べてもわかりません。 どなたかご存知の方がおられましたら、教えて頂けませんでしょうか。 よろしくお願いいたします。 | ||||
|
投稿日時: 2006-09-14 15:25
なんでそんなことする必要があんだ?
自分でパスを指定してハンドルを取得してるんだから自分で保持しておけばいいだろ。 | ||||
|
投稿日時: 2006-09-14 21:24
ダッチです。
これって .NET Framework を使用した言語ですか? そうなのでしたら System.IO.File クラス と System.IO.FileInfo クラス でやりたいことはできると思いますが。 それとも、どうしても API を使いたいのでしょうか。 | ||||
|
投稿日時: 2006-09-14 23:58
返信ありがとうございます。
今API Hookを使用して、ファイル操作(読み書き)の情報を記録するプログラムを作成しており、WriteFile、ReadFile APIに渡ってくるファイルハンドルからファイル名を取得できないものかといろいろ探しているところです。 プルグラムは、VC6で作成してます。 よろしくお願いいたします。 | ||||
|
投稿日時: 2006-09-15 00:19
絶対ありそうと思ったんですが、意外にもズバリのものが見つかりませんね。
GetFileInformationByHandle という API があるのですが、残念ながらファイル名を取得できません。 幾つか組み合わせたらできるのかな? _________________ 囚人のジレンマな日々 | ||||
|
投稿日時: 2006-09-15 00:40
Win32 API のレベルでは不可能だった記憶があります。
NTDLL を使って、ZwQueryObject() で ObjectNameInformation を取ってきてゴニョゴニョすればできるかもしれません。 | ||||
|
投稿日時: 2006-09-15 08:46
普通にファイル名を取得できるようにインターフェイス作った方がいくね?
| ||||
|
投稿日時: 2006-09-15 21:38
IE7 の type=file が、ファイル名しか渡さない(パスを渡さない)ようになったのは、なぜですか?
.NET Framework の OpenFileDialog で、ローカルマシン以外からこれを呼び出すと、FileName プロパティにアクセスできないのはなぜですか? ファイル ハンドルからファイル名がわかるなら、OpenFileDialog の仕様が無駄になりませんか? |
1