DLLImport Problem with LPCSTR and BOOL
Messages   Related Types
This message was discovered on microsoft.public.dotnet.framework.interop.

Post a new message to this list...

Thomas Fisher
Hi All,

I am trying to use LaunchRunner in Baf.dll, it's defined like this:

BOOL CDECL LaunchRunner (LPCSTR szUserDisplay, BOOL* pbEnabled);

I'm trying to use it in a vb.net app but can't make it work. Here are some
attempts I've made:

1)
'This one uses a pointer to a boolean and does no marshaling
<DllImport("Baf.dll")> _
Public Shared Function LaunchRunner(ByVal szUserDisplay As String, ByVal
pbEnabled As Integer) As Boolean
End Function

2)
'This one uses marshaling
<DllImport("Baf.dll")> _
Public Shared Function LaunchRunner (<MarshalAs(UnmanagedType.LPWStr)>
ByVal szUserDisplay As String, <MarshalAs(UnmanagedType.Bool)> ByVal
pbEnabled As Boolean) As <MarshalAs(UnmanagedType.VariantBool)> Boolean
End Function

3)
'Old style declare. Shouldn't function differently than above
Private Declare Auto Function LaunchRunner Lib "Baf" Alias
"LaunchRunner" (ByVal szUserDisplay As String, ByVal pbEnabled As Boolean)
As Boolean

But none of them are working. Here's the code for converting the string for
unmanaged use:

Dim buffer As String = "AB"
buffer.PadRight(255, vbNullChar)

And I'm getting a pointer to a boolean like this:

Dim S As Integer = Marshal.SizeOf(B.GetType)
Dim bPtr As IntPtr = Marshal.AllocHGlobal(S)
Marshal.StructureToPtr(B, bPtr, True)

And here's how I'm calling the method:

LaunchRunner(buffer, bPtr.ToInt32)

Thanks in advance for any help at all on this!

- Tom

Reply to this message...
 
    
Naveen K Kohli
Have you tried passing the BOOL (second parameter) by ref instead of Val.
Thats probably where your call is failing.

<DllImport("Baf.dll")> _
Public Shared Function LaunchRunner(ByVal szUserDisplay As String, ByRef
pbEnabled As Integer) As Boolean

Naveen Kohli
http://www.netomatix.com

"Thomas Fisher" <Click here to reveal e-mail address> wrote in message
news:Click here to reveal e-mail address...
[Original message clipped]

Reply to this message...
 
    
Thomas Fisher
[Original message clipped]

Thanks for the advice.

Just tried it and no go. Same null reference error. Any other ideas?
Anybody?

Reply to this message...
 
 
System.IntPtr
System.Runtime.InteropServices.Marshal
System.Runtime.InteropServices.UnmanagedType




Ad
MBR BootFX
Best-of-breed application framework for .NET projects, developed by Matthew Baxter-Reynolds and MBR IT
 
 Copyright © Matthew Baxter-Reynolds 2001-2008. '.NET 247 Software Development Services' is a trading style of MBR IT Solutions Ltd.
Contact Us - Terms of Use - Privacy Policy - www.dotnet247.com