bool RegQueryInfoKey(hkey,kclass,classsz,reserved,numsubkeys,maxsubkeylen,maxclasslen,numvalues,maxvalnamelen,maxvaldatalen,secdesclen,lastwritetime) HKEY hkey char *kclass = NO_INIT DWORD classsz = NO_INIT DWORD reserved = NO_INIT DWORD numsubkeys = NO_INIT DWORD maxsubkeylen = NO_INIT DWORD maxclasslen = NO_INIT DWORD numvalues = NO_INIT DWORD maxvalnamelen = NO_INIT DWORD maxvaldatalen = NO_INIT DWORD secdesclen = NO_INIT FILETIME lastwritetime = NO_INIT CODE: char keyclass[TMPBUFSZ]; FILETIME ft; LONG result; /* supress unreferenced variable warning */ (void)kclass; (void)reserved; (void)lastwritetime; classsz = sizeof(keyclass); result = RegQueryInfoKey(hkey, keyclass, &classsz, 0, &numsubkeys, &maxsubkeylen, &maxclasslen, &numvalues, &maxvalnamelen, &maxvaldatalen, &secdesclen, &ft); RETVAL = SUCCESS(result); if (!RETVAL) SetLastError(result); OUTPUT: RETVAL kclass SETPV(1, keyclass); numsubkeys maxsubkeylen maxclasslen numvalues maxvalnamelen maxvaldatalen secdesclen lastwritetime if (RETVAL) { ft2timet(&ft); } //////////////////////////////// bool RegEnumKeyEx(hkey,idx,subkey,classname,lastwritetime) HKEY hkey DWORD idx char *subkey = NO_INIT char *classname = NO_INIT FILETIME lastwritetime = NO_INIT CODE: char keybuffer[TMPBUFSZ]; DWORD keybuffersz = TMPBUFSZ; char classbuffer[TMPBUFSZ]; DWORD classbuffersz = TMPBUFSZ; FILETIME ft; LONG result = RegEnumKeyEx(hkey, idx, keybuffer, &keybuffersz, 0, classbuffer, &classbuffersz, &ft); /* supress unreferenced variable warning */ (void)subkey; (void)classname; (void)lastwritetime; RETVAL = SUCCESS(result); if (!RETVAL) SetLastError(result); OUTPUT: RETVAL subkey if (RETVAL) { SETPV(2, keybuffer); } classname if (RETVAL) { SETPV(3, classbuffer); } lastwritetime if (RETVAL) { SETNV(4, ft2timet(&ft)); }