Antoine.st | Alias for Win Api |
About Aliasエイリアスってのは別名のことで、わかりづらい API の名前をより簡単に理解できるように名づけたり、または伝統的な名前に合わせるためなどに使われます。すぐ思い出せるのが、RtlMoveMemory() のエイリアスとして CopyMemory() と名づけたりというやつです。ま、これはマクロ名だったりするわけですが。 エイリアスのつけ方は簡単で、 Declare Ansi Function HogeHoge _ Lib "Kernel32.dll" _ Alias "GetFileAttributesA" _ ( _ ByVal lpFileName As String _ ) As Integer という感じです。実際に呼び出される DLL 関数は GetFileAttributesA() ですが Visual Basic .NET のコード上では HogeHoge() として呼び出せる、というわけ。DllImport を使った場合でも、 <DllImport( _ "Kernel32.dll", _ EntryPoint:="GetFileAttributesA" CallingConvention:=CallingConvention.Winapi, _ CharSet:=CharSet.Ansi, _ ExactSpelling:=False, _ SetLastError:=True _ )> Public Shared Function HogeHoge( _ ByVal lpFileName As String) As Integer End Function こんな感じで同様の効果が得られます。 Suffix上のコードでもありますが、ExactSpelling フィールドに False を設定しておくことにより、CharSet フィールドで指定した文字列型 (Ansi, Unicode) の接尾語 (A, W) が自動的に追加されます。 と説明がなかなかわかりづらいのですが、ようするに次のようなことです。 旧 Visual Basic では、 GetFileAttributes() を呼び出したいときに実体である GetFileAttributesA()、もしくは GetFileAttributesW() のどちらかを明示的に指定する必要がありました。.NET Framework では ExactSpelling フィールドに True を設定しておけば、その指定を行う必要はありません。
|