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. | [reply] [Watch: Dir/Any] [d/l] |
I added "FILETIME T_IV" to the typemap
You can actually specify whatever you like for "FILETIME" and it "will work" :-) Perl is satisfied if it can find a typemap entry - it doesn't care what type that entry specifies, or even if the specified type is one that it knows about.
Of course, there should be no need for the typemap to mention FILETIME at all - and there isn't if Registry.xs is fixed. (I'm not sure that I made that clear.)
Cheers, Rob
| [reply] [Watch: Dir/Any] |