Be', GetLastError che restituisce 0 non è un mistero... nella documentazione della funzione si dice che restituisce TRUE se le cose sono andate bene, in caso contrario FALSE, senza fare menzione di codici di errore recuperabili tramite GetLastError (come invece si legge nella documentazione di altre API).