Out of Memory

ごめん、忘れてた。

目次

Blog 利用状況

ニュース

2008年7月1日
Microsoft MVP for Developer Tools - Visual C++ を再受賞しました。
2008年2月某日
MVPアワードがVisual C++に変更になりました。
2007年10月23日
blogタイトルを変更しました。
2007年7月1日
Microsoft MVP for Windows - SDKを受賞しました!
2007年6月20日
スキル「ニュース欄ハック」を覚えた!
2006年12月14日
記念すべき初エントリ
2006年12月3日
わんくま同盟に加盟しました。

カレンダー

中の人

aetos

顔写真

埼玉を馬鹿にする奴は俺が許さん。

基本的に知ったかぶり。興味を持った技術に手を出して、ちょっと齧りはするものの、それを応用して何か形にするまでは及ばずに飽きて放り出す人。

Microsoft MVP for Windows SDK July 2007 - February 2008, Microsoft MVP for Visual C++ February 2008 - June 2009
Microsoft MVP for Windows SDK
July 2007 - February 2008
Microsoft MVP for Visual C++
February 2008 - June 2009

アクセサリ

あわせて読みたい

e-Words

アフィリエイト

記事カテゴリ

書庫

日記カテゴリ

NTネイティブパス名をMS-DOSパス名に変換するには?

本投稿は備忘録であり、ご回答は NTネイティブパス名をMS-DOSパス名に変換するには? で募っています。
マルチポストとなるのを避けるため、こちらには技術的な内容をご回答されませんよう、お願いいたします。

以下本文。

NT パス名、例えば \Device\HarddiskVolume1\... を C:\... に変換するにはどうすればよいのだろう?

ローカルドライブ下にあるパスについては、GetLogicalDriveStrings でドライブ名の一覧を取得し、QueryDosDevice でドライブ名を NT デバイス形式に変換し、前方一致で確認すればできそう。
が、ネットワークドライブや、ドライブレターが割り当てられていない UNC パスについてはどうすれば?

ローカルドライブの場合、例えば C: について QueryDosDevice で問い合わせれば \Device\HarddiskVolume1 という文字列のみが返ってくるため、前方一致で判別できる。
しかし、例えば、N: が \\Server\Path にマップされている場合、ネットワークドライブ内にあるファイルの NT パスは \Device\LanmanRedirector\Server\Path だが、N: に対して QueryDosDevice を実行すると \Device\LanmanRedirector\;N:謎の数字 \Server\Path のような文字列が返ってきてしまい、前方一致できない。
また、QueryDosDevice に UNC を渡しても、対応する NT パスは取得できない。
NT パスが \Device\LanmanRedirector\Server\Path となっていれば、それは \\Server\Path を指すのだと解釈してしまうのも、ドライバか何かの実装が異なれば、 LanmanRedirector 以外の名前がありそうで怖い。

RtlNtPathNameToDosPathName という関数もあるが、Undocumented なので、できれば使いたくない。

マウントポイント等の場合にどうなるかは要調査。

投稿日時 : 2008年8月5日 13:15

Feedback

No comments posted yet.
タイトル  
名前  
Url
コメント