On 8 Oct 2001, Alexandre Julliard wrote:
Francois Gouget fgouget@free.fr writes:
Grrr, HGLOBAL is not a void* pointer... yet => casts :-(
GlobalLock would be better...
The problem is that CommandLineToArgvW is supposed to return a pointer, not a handle. But I cannot do:
hargv=GlobalAlloc(...); argv=GlobalLock(hargv); ... return argv;
Because then the the memory object is going to be locked and freeing a locked memory object is bad according to the MSDN. And they don't say that you should to a GlobalUnlock before the GlobalFree.
So I could do:
hargv=GlobalAlloc(...); argv=GlobalLock(hargv); GlobalUnlock(hargv); ... return argv;
After all this memory object is GMEM_FIXED, it has to since I return a pointer to it. But the MSDN says that in that case GlobalAlloc returns a pointer, not a mere handle. And Invoking GlobalLock+GlobalUnlock just to avoid a cast seems a bit extreme.
Sigh. What a stupid memory API.
-- Francois Gouget fgouget@free.fr http://fgouget.free.fr/ The nice thing about meditation is that it makes doing nothing quite respectable -- Paul Dean