-
WoW64環境でのみ動作する。他の環境では何もしない。
-
1:xyzzy(cli)を実行したプロセスから見えているであろうファイルを自動的に選ぶ
- 例1A:32bit の bash から xyzzycli が呼び出された場合、 与えられたファイル名をリダイレクト有りのファイル名として解釈する
- 例1B:64bit のエクスプローラから xyzzycli が呼び出された場合、 与えられたファイル名をリダイレクト無しのファイル名として解釈する
-
2:xyzzy内部の状態に合わせて、与えられたファイル名を変換する
- 例2A:xyzzy内部はリダイレクト無しのモードで、
外部32bitプロセスから
C:\Windows\System32\mapisvc.inf
が与えられた場合、 内部ではC:\Windows\SysWOW64\mapisvc.inf
として解釈する - 例2B:xyzzy内部はリダイレクト有りのモードで、
外部64bitプロセスから
C:\Windows\System32\NetTrace.PLA.Diagnostics.xml
が与えられた場合、 内部ではC:\Windows\Sysnative\NetTrace.PLA.Diagnostics.xml
として解釈する
- 例2A:xyzzy内部はリダイレクト無しのモードで、
外部32bitプロセスから
-
3:これらをオーバーライドするコマンドライン引数を追加する
- -wow64-redirection : 呼び出し元プロセスによらず、与えられたファイル名をリダイレクト有りのものとして解釈する。
- -no-wow64-redirection : 呼び出し元プロセスによらず、与えられたファイル名をリダイレクト無しのものとして解釈する。
-
4:ドラッグ&ドロップの場合は保留
- ドラッグ元のプロセスを拾う方法が分からない・・・
本当は unittest を書くのがスジなのだろうけど、どう書いたら良いのかよくわからんので手動。
- 32bit プロセスからのオープンには
C:\Windows\SysWOW64\cmd.exe
(32bit 版 cmd.exe) を使用する。 - 64bit プロセスからのオープンには
C:\Windows\System32\cmd.exe
(64bit 版 cmd.exe) を使用する。
SysWOW64 のみに存在するファイル C:\Windows\SysWOW64\mapisvc.inf
を開く。
以下のように 32bit 版 cmd.exe からオープンする
> C:\Windows\SysWOW64\cmd.exe
> C:\...\xyzzycli.exe C:\Windows\System32\mapisvc.inf
このファイル名は、ネイティブパスとしては以下のように解釈される
`C:\Windows\SysWOW64\mapisvc.inf`
-
リダイレクト有り (wow64-enable-file-system-redirector が t) の場合、以下がオープンされる
`C:\Windows\System32\mapisvc.inf` (ただし実際のファイル実体は `C:\Windows\SysWOW64\mapisvc.inf`)
-
リダイレクト無し (wow64-enable-file-system-redirector が nil) の場合、以下がオープンされる
`C:\Windows\SysWOW64\mapisvc.inf`
上記テストと同様に、SysWOW64 のみに存在するファイル C:\Windows\SysWOW64\mapisvc.inf
を開く。
以下のように 64bit 版 cmd.exe からオープンする
> C:\Windows\System32\cmd.exe
> C:\...\xyzzycli.exe C:\Windows\System32\mapisvc.inf
このファイル名は、ネイティブパスとしては以下のように解釈される
`C:\Windows\System32\mapisvc.inf`
-
リダイレクト有り (wow64-enable-file-system-redirector が t) の場合、以下が新規ファイルとして作られる
`C:\Windows\Sysnative\mapisvc.inf` (ただし実際のファイル実体は `C:\Windows\System32\mapisvc.inf`)
-
リダイレクト無し (wow64-enable-file-system-redirector が nil) の場合、以下が新規ファイルとして作られる
`C:\Windows\System32\mapisvc.inf`
64bit プロセスからオープンしたい場合は C:\Windows\SysWOW64\mapisvc.inf
というファイル名を使う。
System32 のみに存在するファイル C:\Windows\System32\NetTrace.PLA.Diagnostics.xml
を開く。
以下のように 32bit 版 cmd.exe からオープンする
> C:\Windows\SysWOW64\cmd.exe
> C:\...\xyzzycli.exe C:\Windows\System32\NetTrace.PLA.Diagnostics.xml
このファイル名は、ネイティブパスとしては以下のように解釈される
`C:\Windows\SysWOW64\NetTrace.PLA.Diagnostics.xml`
-
リダイレクト有り (wow64-enable-file-system-redirector が t) の場合、以下が新規ファイルとして作られる
`C:\Windows\System32\NetTrace.PLA.Diagnostics.xml` (ただし実際のファイル実体は `C:\Windows\SysWOW64\NetTrace.PLA.Diagnostics.xml`)
-
リダイレクト無し (wow64-enable-file-system-redirector が nil) の場合、以下が新規ファイルとして作られる
`C:\Windows\SysWOW64\NetTrace.PLA.Diagnostics.xml`
32bit プロセスからオープンしたい場合は C:\Windows\Sysnative\NetTrace.PLA.Diagnostics.xml
というファイル名を使う。
上記テストと同様に、System32 のみに存在するファイル C:\Windows\System32\NetTrace.PLA.Diagnostics.xml
を開く。
以下のように 64bit 版 cmd.exe からオープンする
> C:\Windows\System32\cmd.exe
> C:\...\xyzzycli.exe C:\Windows\System32\NetTrace.PLA.Diagnostics.xml
このファイル名は、ネイティブパスとしては以下のように解釈される
`C:\Windows\System32\NetTrace.PLA.Diagnostics.xml`
-
リダイレクト有り (wow64-enable-file-system-redirector が t) の場合、以下がオープンされる
`C:\Windows\Sysnative\NetTrace.PLA.Diagnostics.xml` (ただし実際のファイル実体は `C:\Windows\System32\NetTrace.PLA.Diagnostics.xml`)
-
リダイレクト無し (wow64-enable-file-system-redirector が nil) の場合、以下がオープンされる
`C:\Windows\System32\NetTrace.PLA.Diagnostics.xml`