Moin Thunderchild,
bei IMalloc verhält es sich so ähnlich wie bei den Netapi Funktionen unter NT ff.
Hier wird den Funktionen die Adresse einer Variablen übergeben, in denen die Funktion (z.B. bei NetShareEnum) dann die Adresse ihres Ergebnisses speichert, wobei die Funktion den notwendigen Speicher selber anfordert.
Um diesen dann wieder freizugeben muss man NetApiBufferFree benutzen.
In dem Beispiel hier entspricht dann SHGetSpecialFolderLocation der Funktion die von sich aus Speicher reserviert, und IMalloc.Free dem Aufruf von NetApiBufferFree.
@Mathias:
Stimmt überhaupt, ich hätte CSIDL_DRIVES nehmen müssen
Dafür hast Du dann den Aufruf von Free vergessen