0

Wow64DisableWow64FsRedirectionに関するMicrosoft のページを見ると、いくつかの C コードが表示されます。この関数を呼び出す必要があり、VB.net から復帰した場合はどうなりますか?

これまでのところ、私はこれを行ってきました:

 <Runtime.InteropServices.DllImport("KERNEL32.DLL",  EntryPoint:="Wow64DisableWow64FsRedirection")> _
Public Shared Function DisableWow64Redirection() As Boolean
End Function

Revert ブラザー機能についても同様です。

私はそれを次のように呼びます:

DisableWow64Redirection()

実際にsystem32でexeを見つけた後に呼び出すシェルコマンドとして、これは機能しているようですが、Revertについてはわかりません。パラメーターが必要ですか? この元に戻すページでは、disable からの出力を取得して、元に戻す呼び出しにプラグインする必要があるようです。そうですか?ブール値を取り込んで実際に Kernal32.DLL 関数で使用するように DLLimport を変更するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

1

関数定義を次のように変更できます

<DllImport("kernel32.dll", EntryPoint := "Wow64DisableWow64FsRedirection")> _
Public Shared Function DisableWow64Redirection(ByRef output As IntPtr) As Boolean

Revert() を次のように定義します。

<DllImport("kernel32.dll", EntryPoint := "Wow64RevertWow64FsRedirection")> _
Public Shared Function RevertWow64Redirection(ByRef handle As IntPtr) As Boolean

これらを次のように呼び出します。

Dim handle As IntPtr
DisableWow64Redirection(handle)
RevertWow64Redirection(handle)

私は VB.NET の専門家ではないので、構文が正しくない可能性があります。重要なのは、PVOID ネイティブ型にマップされる IntPtr 型の参照パラメーターを指定することです。あなたはそれに固執し、同じ値を Revert() に渡したいと思うでしょう。

于 2010-10-13T17:52:18.630 に答える
1

宣言が間違っています。(ByRef oldValue As IntPtr) 引数を取ります。元に戻す機能に渡す必要があるもの。

ただし、これを .NET プログラムで安全に使用することはできません。また、CLR にも影響し、.NET Framework アセンブリを見つけることができなくなります。ロードされる時期を予測することはできません。必要なことを達成するためのより良い方法は確かにあります。それについて新しい質問を始めてください。

于 2010-10-13T17:55:02.263 に答える