It is used in some places sortof. I added "FILETIME T_IV" to the typemap. It works, but it isn't correct. For the record, Win32API::Registry treats FILETIMEs as 8 byte strings.
bool
RegQueryInfoKey(hkey,kclass,classsz,reserved,numsubkeys,maxsubkeylen,m
+axclasslen,numvalues,maxvalnamelen,maxvaldatalen,secdesclen,lastwrite
+time)
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)); }
Notice lastwritetime output is broken in RegQueryInfoKey.