trouble calling function from windows dll

John Chapman johnch_atms at hotmail.com
Sun Mar 25 02:48:46 PDT 2012


On Saturday, 24 March 2012 at 19:11:38 UTC, maarten van damme 
wrote:
> hi,
> I'm trying to call NtUnmapViewOfSection from ntdll.dll. 
> According to the
> msdn docs it should look like
>
> NTSTATUS NtUnmapViewOfSection(
>   __in      HANDLE ProcessHandle,
>   __in_opt  PVOID BaseAddress
> );
>
>
> I tried to call it by simply declaring
>
> extern(Windows) uint NtUnmapViewOfSection(HANDLE hProcess,PVOID 
> baseAddress);
>
> But now I get
>
>  Error 42: Symbol Undefined _NtUnmapViewOfSection at 8
>
>
> I've also tried using GetProcAddress
>
> cast(uint function(HANDLE hProcess,PVOID
> address))GetProcAddress(Runtime.loadLibrary("ntdll.dll"),
> "NtUnmapViewOfSection")
>
> but when I looked at GetLastError I get error 127 (specified 
> procedure
> could not be found) and the function doesn't work.
>
>
> It's likely I'm missing something easy here, I just can't 
> figure out what it is.
>
> Someone knows what it is?

Actually, Runtime.loadLibrary should return the function pointer 
correctly.

Your call to GetLastError() is returning 127 because 
Runtime.loadLibrary itself calls GetProcAddress to see if it 
contains a GC-related function (which will fail if it's not a D 
DLL).

>
>
> Maarten




More information about the Digitalmars-d-learn mailing list