wintrust.dllで利用可能な関数CryptCATCatalogInfoFromContextを呼び出したい。しかし、そうすると、指定された配列が予期されたタイプではなかったというエラーが表示されます。 次のコードを使用してメソッドを呼び出しています。私が使用しているデータ型の一部が、必要なデータ型と一致していないようです。
'import wintrust.dll
<DllImport("Wintrust.dll", PreserveSig:=True, SetLastError:=False)> _
Private Shared Function CryptCATCatalogInfoFromContext(ByVal catalogContext As IntPtr, ByVal hash As CATALOG_INFO_, ByVal dwFlags As Integer) As Boolean
End Function
'create structure CATALOG_INFO
<StructLayout(LayoutKind.Sequential)> _
Public Structure CATALOG_INFO_
Public cbStruct As UInteger
<MarshalAs(UnmanagedType.SafeArray)> _
Public wszCatalogFile() As Char
End Structure
すでにCatalogContextを取得しています。
Dim infoStruct As New CATALOG_INFO_()
infoStruct.cbStruct = 256
Dim c(255) As Char
infoStruct.wszCatalogFile = c
CryptCATCatalogInfoFromContext(CatalogContext, infoStruct, 0)
最後の行はエラーをスローします指定された配列は予期されたタイプではありませんでした。 配列に間違ったデータ型を使用しましたか?