RFC: HKCR merge implementation

George Stephanos gaf.stephanos at gmail.com
Tue Sep 10 17:55:38 CDT 2013

I'm proposing my HKEY_CLASSES_ROOT implementation patches for review. Feel
free to comment.
So far, I've written code for all functions except for the RegEnum family.

General description:

HKCR handles are special. All wine handles have the two lowest bits zero'd.
HKCR handles are masked. 10b specifically.
They have their own table separate from the generic handle table.
An HKCR handle has an HKCU handle and an HKLM handle below it. Access mask
and a string representing the path are also needed
since the handle has to attempt to reopen previously failed openings at
certain stages.

First patch: specially handles HKCR handles WITHOUT affecting the general
behavior. The end result is still the exact same. Patch provides a
foundation for the rest.
Second patch: added path management
Third patch: added HKCU

Here's a quick description of each function:

create_hkcr_struct: allocates the memory needed for the struct, adds it to
the table and gives back a pointer to it
get_hkcr_path: given an HKCR handle and a subkey string, prepares a subkey
string representing the same subkey rooted at HKLM/HKCU.
create_hkcr: RegCreateKeyEx
open_hkcr: RegOpenKeyEx
resolve_hkcr: checks the HKCR handle, tries to reopen previously failed
internal handles, gives back HKCU first if available then HKLM
close_hkcr: deallocates path and struct, removes struct from table.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20130911/3e7c29f8/attachment.html>

More information about the wine-devel mailing list