'UPGRADE_WARNING: 構造体 FileTime に、この Declare ステートメントの引数としてマーシャリング属性を渡す必要があります。 Public Declare Function LocalFileTimeToFileTime Lib "KERNEL32.DLL" (ByRef lpLocalFileTime As FileTime, ByRef lpFileTime As FileTime) As Integer
なお、FileTime構造体は以下の通りです。
'FileTime構造体 Public Structure FileTime Dim LowDateTime As Integer Dim HighDateTime As Integer End Structure
> 'UPGRADE_WARNING: 構造体 FileTime に、この Declare ステートメントの引数としてマーシャリング属性を渡す必要があります。 Google ってみたところ、英語版の VS2005 だと、 'UPGRADE_WARNING: Structure FileTime may require marshalling attributes to be passed as an argument in this Declare statement. Click for more: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="C429C3A5-5D47-4CD9-8F51-74A1616405DC"' になり、VS2003 の場合は、 'UPGRADE_WARNING: Structure FileTime may require marshalling attributes to be passed as an argument in this Declare statement. Click for more: 'ms-help://MS.VSCC.2003/commoner/redir/redirect.htm?keyword="vbup1050"' というメッセージになるらしいです。
手元に ms-help プロトコルを開ける環境が残っていないので未確認ですが、「Visual Studio 2005」と共に 「Visual Studio 2005 MSDN Library」をインストールしてあればリンクを開けるかもしれません。 (リンクを開けたとしても、有益な情報を得られない可能性は高そうですが)
Hongliang さんご提示の pinvoke.net は私もたびたび参考にさせてもらっていますが、今回の LocalFileTimeToFileTime API の宣言は掲載されていないみたいですね。 FileTimeToLocalFileTime API の宣言は掲載されているのですけれども。
すでに示されているように、今回の宣言は、自動変換された宣言のままで動くと思います。 もしあえて修正するとすれば、In 属性および Out 属性を明示して ' Imports System.Runtime.InteropServices Public Declare Function LocalFileTimeToFileTime Lib "KERNEL32.DLL" (<[In]> ByRef lpLocalFileTime As FileTime, <Out> ByRef lpFileTime As FileTime) As <MarshalAs(UnmanagedType.Bool)> Boolean Public Declare Function FileTimeToLocalFileTime Lib "KERNEL32.DLL" (<[In]> ByRef lpFileTime As FileTime, <Out> ByRef lpLocalFileTime As FileTime) As <MarshalAs(UnmanagedType.Bool)> Boolean のようにすると良いのではないでしょうか。 元の Win32 API の戻り値が「BOOL 型」であるため、上記では戻り値も As Boolean に変更してあります。
その他、個別判断が必要な例としては、 KB161301 の WindowFromPoint API が挙げられます。
この API の本来の定義は『HWND WindowFromPoint( POINT Point );』なのですが、VB6 の制限により、 多くの場合、引数定義を (ByVal xPoint As Long, ByVal yPoint As Long) に置き換えて代用されています。 また、VBA7 でいうところの As LongPtr 型がまだ使えないので、戻り値が As Long で代用されているわけですが、 これらそれぞれの「As Long」を、.NET の As Integer と As IntPtr に再翻訳する作業は、 アップグレード ウィザードの自動変換だけではまかないきれないでしょう。