Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / General / June 2007

Tip: Looking for answers? Try searching our database.

WNetAddConnection2 call: "PInvokeStackImbalance was detected"

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
John M. Gamble - 08 Jun 2007 20:15 GMT
I'm getting this message in Visual Studio 2005:
  PInvokeStackImbalance was detected

  Message: A call to PInvoke function
  'Refresh!Refresh.Main::WNetAddConnection2' has unbalanced the stack.

  This is likely because the managed PInvoke signature does not match
  the unmanaged target signature. Check that the calling convention
  and parameters of the PInvoke signature match the target unmanaged
  signature.

My goal is to connect to a remote filesystem.  I don't want to
create a mapping to the filesystem.  I just want to connect using the
login name and password that I already have.  The web sites that I
googled around at stated that WNetAddConnection2() could be used for
this purpose, particularly

<http://groups.google.com/group/microsoft.public.vb.winapi.networks/browse_t
hread/thread/f61e50f43601670b/005f911e0da84edc?lnk=st&q=LOGON+VPN+VB&rnum=7&
hl=en#>

The code in question is this:


  ' dwFlags values.
  Private Const CONNECT_UPDATE_PROFILE As Long = &H1
  Private Const CONNECT_INTERACTIVE As Long = &H8
  Private Const CONNECT_PROMPT As Long = &H10

  ' dwType values.
  Private Const RESOURCETYPE_ANY As Long = &H0
  Private Const RESOURCETYPE_DISK As Long = &H1
  Private Const RESOURCETYPE_PRINT As Long = &H2
  Private Const RESOURCETYPE_RESERVED As Long = &H8
  Private Const RESOURCETYPE_UNKNOWN As Long = &HFFFFFFFF

  ' dwScope values.
  Private Const RESOURCE_CONNECTED As Long = &H1
  Private Const RESOURCE_GLOBALNET As Long = &H2
  Private Const RESOURCE_REMEMBERED As Long = &H3
  Private Const RESOURCE_RECENT As Long = &H4
  Private Const RESOURCE_CONTEXT As Long = &H5

  ' dwDisplayType values.
  Private Const RESOURCEDISPLAYTYPE_DOMAIN As Long = &H1
  Private Const RESOURCEDISPLAYTYPE_GENERIC As Long = &H0
  Private Const RESOURCEDISPLAYTYPE_SERVER As Long = &H2
  Private Const RESOURCEDISPLAYTYPE_SHARE As Long = &H3

  Private Const RESOURCEUSAGE_CONNECTABLE As Long = &H1
  Private Const SW_SHOWNORMAL As Long = 1

  Private Declare Function WNetAddConnection2 Lib "mpr.dll" _
     Alias "WNetAddConnection2A" _
    (ByVal lpNetResource As NETRESOURCE, _
     ByVal lpPassword As String, _
     ByVal lpUserName As String, _
     ByVal dwFlags As Long) As Long

' The examples used Private Type but Visual Studio complained
' and said that Structure was now preferred.

  Private Structure NETRESOURCE
     Dim dwScope As Long
     Dim dwType As Long
     Dim dwDisplayType As Long
     Dim dwUsage As Long
     Dim lpLocalName As String
     Dim lpRemoteName As String
     Dim lpComment As String
     Dim lpProvider As String
  End Structure


' Function code here.
     Dim netstruct As New NETRESOURCE
     Dim errcode As Long

     With netstruct
        .dwScope = RESOURCE_GLOBALNET
        .dwType = RESOURCETYPE_ANY
        .dwDisplayType = RESOURCEDISPLAYTYPE_SHARE
        .dwUsage = RESOURCEUSAGE_CONNECTABLE
        .lpRemoteName = backup_base_dir
        .lpLocalName = vbNullString
        .lpProvider = vbNullString
     End With

     errcode = WNetAddConnection2(netstruct, _
           strLogPass, strLogName, _
           CONNECT_INTERACTIVE Or CONNECT_UPDATE_PROFILE)

Am I using contradictory options?  Or am I using the wrong function
to begin with?

Thanks,

Signature

    -john

February 28 1997: Last day libraries could order catalogue cards
from the Library of Congress.

Herfried K. Wagner [MVP] - 08 Jun 2007 20:33 GMT
"John M. Gamble" <jgamble@ripco.com> schrieb:
> I'm getting this message in Visual Studio 2005:
>   PInvokeStackImbalance was detected
[quoted text clipped - 3 lines]
>
> [...]

I assume you took the sample from a VB6 projekt or code repository.  Note
that VB 2005 is not a technical successor of VB6 and code is generally not
compatible between the two programming languages.  Whereas 'Long' was a
32-bit data type in VB6, it's a 64-bit type in VB.NET.  Thus you'll have to
modify your declarations, constants, and structures accordingly (this means,
changing 'Long' to 'Integer' or 'Int32', with some exceptions).  Note that
some additional modifications of the source code may be necessary in order
to make the code work.

Signature

M S   Herfried K. Wagner
M V P  <URL:http://dotnet.mvps.org/>
V B   <URL:http://dotnet.mvps.org/dotnet/faqs/>

John M. Gamble - 08 Jun 2007 23:03 GMT
>"John M. Gamble" <jgamble@ripco.com> schrieb:
>> I'm getting this message in Visual Studio 2005:
[quoted text clipped - 6 lines]
>
>I assume you took the sample from a VB6 projekt or code repository.  Note

Hmm.  The claim was that it was from a dotnet source, but given the other
change I had to make I am suspicious.

>that VB 2005 is not a technical successor of VB6 and code is generally not
>compatible between the two programming languages.  Whereas 'Long' was a
[quoted text clipped - 3 lines]
>some additional modifications of the source code may be necessary in order
>to make the code work.

Thanks, I'll start with that.

Signature

    -john

February 28 1997: Last day libraries could order catalogue cards
from the Library of Congress.


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.