Looking for a little help with the win32 headers
Rikki Cattermole via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Mar 25 22:05:00 PDT 2015
On 26/03/2015 5:52 p.m., Belly wrote:
> Hello, just installed D today. I have this code:
>
> import std.stdio;
> import win32.windef;
> import win32.winbase;
>
> void main()
> {
> LPSTR lpBuffer;
> PDWORD lpnSize;
> int result = GetComputerNameA(lpBuffer, lpnSize);
>
> writeln(result);
> }
>
> It passes zeroes to the API, I'm stuck and can't find a suitable sample
> in the win32 repository here:
> https://github.com/AndrejMitrovic/DWinProgramming
According to MSDN you need to preallocate the buffer.
import std.stdio;
import win32.windef;
import win32.winbase;
void main() {
char[] buffer;
buffer.length = MAX_COMPUTERNAME_LENGTH + 1;
size_t size = MAX_COMPUTERNAME_LENGTH;
int result = GetComputerNameA(buffer.ptr, &size);
writeln(buffer[0 .. size]);
}
I haven't tested it. But I think that should work.
Also I think writeln will be outputting with a null terminator. So may
need to -1 it.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724295%28v=vs.85%29.aspx
More information about the Digitalmars-d-learn
mailing list