bindings/win32, RAS, error 632

Leonid Krashenko Leonid.Krashenko at gmail.com
Thu Apr 9 11:57:30 PDT 2009


On Thu, 09 Apr 2009 22:02:12 +0400, Leonid Krashenko <jetbird at gmail.com>  
wrote:

> Hello!
>
> I have a question about using bindings/win32, RAS.
>
> I've
> 1. compiled win32.lib (-version=WindowsXP),
> 2. used "implib rasapi32.lib rasapi32.def" with written by hand  
> rasapi32.def with following content (linkdef (don't know why) can't find  
> any of that symbols):
> Code:
> LIBRARY RASAPI32
> DESCRIPTION 'rasapi32.dll'
> EXETYPE NT
>
> EXPORTS
> _D5win323ras20RasGetConnectStatusAFT5win323ras8HRASCONNPS5win323ras14RASCONNSTATUSAZk  
> = RasGetConnectStatusA
> _D5win323ras18RasGetErrorStringAFkPakZk = RasGetErrorStringA
> _D5win323ras15RasEnumEntriesAFPaPaPS5win323ras13RASENTRYNAMEAPkPkZk =  
> RasEnumEntriesA
>
>
>
> 3. compiled the following code:
> Code:
> PhoneBookEntries getPhoneBookEntries() {
>      auto entries = new PhoneBookEntries;
>
>      RASENTRYNAME[100] buf;
>      buf.ptr.dwSize = RASENTRYNAME.sizeof;
>      uint entriesNum, length = buf.length*RASENTRYNAME.sizeof;
>
> // THIS IS IMPORTANT err VARIABLE
>      auto err = RasEnumEntries(null, null, buf.ptr, &length,  
> &entriesNum);
>
> // ....
>
>      return entries;
> }
>
>
>
> with cmd: Code:
>
> dmd -c -ofmain.obj main.d -version=WindowsXP
> dmd -c -ofrasdial.obj rasdial.d -version=WindowsXP
> dmd main.obj rasdial.obj -ofdialer rasapi32.lib win32.lib  
> -version=WindowsXP
>
>
>
> 4. and always get 'err' variable equal to 632, "ERROR_INVALID_STRUCTURE"  
> (see http://msdn.microsoft.com/en-us/library/aa377380(VS.85).aspx for  
> RasEnumEntries function details),
>
> BUT the analogous DELPHI code works perfectly:
> Code:
> procedure getPhoneBookEntries(list: TStrings);
> var
>    BuffSize          : Integer;
>    Entries           : Integer;
>    Entry             : Array[1..MaxEntries] of TRasEntryName;
>    X,Result_         : Integer;
> begin
>    list.Clear;
>    Entry[1].dwSize:=SizeOf(TRasEntryName);
>    BuffSize:=SizeOf(TRasEntryName)*MaxEntries;
>    Result_:=RasEnumEntries(nil, nil, @Entry[1], BuffSize, Entries);
>
>
> ...
>
> There is something I do wrong here... but what?

I've mistaken, not ERROR_INVALID_STRUCTURE, but ERROR_INVALID_SIZE (which  
means "Incorrect structure size",  
http://msdn.microsoft.com/en-us/library/bb530704(VS.85).aspx)



More information about the Digitalmars-d mailing list