[RESENT]: Fixed winedbg example configuration
Jon Bright
jon at siliconcircus.com
Fri Jul 18 11:17:08 CDT 2003
Hi,
Attached, a better test. The conclusion:
- Values are enumerated in the order they were created, even if a
value's been deleted in the meantime.
- Key are enumerated alphabetically, irrespective of the order in
which they were created.
--
Jon Bright
Lead Programmer, Silicon Circus Ltd.
http://www.siliconcircus.com
-------------- next part --------------
//---------------------------------------------------------------------------
#include <windows.h>
#include <stdio.h>
#pragma hdrstop
//---------------------------------------------------------------------------
int fail(char *stage)
{
printf("FAILED: %s\n",stage);
return -1;
}
#pragma argsused
int main(int argc, char* argv[])
{
HKEY software, wine, valorder, keyorder, k;
char name[2];
DWORD i,nsize,type,ri,risize,disp;
FILETIME ft;
if (RegCreateKeyEx(HKEY_CURRENT_USER,"Software",0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&software,&disp)!=ERROR_SUCCESS)
return fail("Create-Software");
if (RegCreateKeyEx(software,"Wine",0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&wine,&disp)!=ERROR_SUCCESS)
return fail("Create-Wine");
if (RegCreateKeyEx(wine,"TestValOrder",0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&valorder,&disp)!=ERROR_SUCCESS)
return fail("Create-TestValOrder");
name[1]='\0';
for (i=26; i; i--)
{
name[0]='A'+i-1;
if (RegSetValueEx(valorder,name,0,REG_DWORD,(BYTE*)&i,sizeof(i))!=ERROR_SUCCESS)
return fail("SetValueEx");
}
for (i=0; i<26; i++)
{
nsize = 2;
risize = sizeof(ri);
if (RegEnumValue(valorder,i,name,&nsize,NULL,&type,(BYTE*)&ri,&risize)!=ERROR_SUCCESS)
return fail("EnumValue");
printf("%2d. %s = %d\n",i,name,ri);
if (ri!=26-i)
return fail("Comparison");
}
if (RegDeleteValue(valorder,"C"))
return fail("DeleteValue");
i = 1000;
if (RegSetValueEx(valorder,"1",0,REG_DWORD,(BYTE*)&i,sizeof(i))!=ERROR_SUCCESS)
return fail("SetValueEx");
for (i=0; i<26; i++)
{
nsize = 2;
risize = sizeof(ri);
if (RegEnumValue(valorder,i,name,&nsize,NULL,&type,(BYTE*)&ri,&risize)!=ERROR_SUCCESS)
return fail("EnumValue");
printf("%2d. %s = %d\n",i,name,ri);
if ((i<23 && ri!=26-i) || ((i==23 || i==24) && ri!=25-i) || (i==25 && ri!=1000))
return fail("Comparison");
}
if (RegCloseKey(valorder)!=ERROR_SUCCESS)
return fail("CloseKey");
if (RegDeleteKey(wine,"TestValOrder")!=ERROR_SUCCESS)
return fail("DeleteKey-Val");
if (RegCreateKeyEx(wine,"TestKeyOrder",0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&keyorder,&disp)!=ERROR_SUCCESS)
return fail("Create-TestKeyOrder");
name[1]='\0';
for (i=26; i; i--)
{
name[0]='A'+i-1;
if (RegCreateKeyEx(keyorder,name,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&k,&disp)!=ERROR_SUCCESS)
return fail("Create-KeyLoop");
if (RegCloseKey(k)!=ERROR_SUCCESS)
return fail("Close-KeyLoop");
}
for (i=0; i<26; i++)
{
nsize = 2;
if (RegEnumKeyEx(keyorder,i,name,&nsize,NULL,NULL,NULL,&ft)!=ERROR_SUCCESS)
return fail("EnumKey");
printf("%2d. %s\n",i,name);
if (name[0]!=(char)('A'+i))
return fail("Comparison");
}
for (i=0; i<26; i++)
{
name[0]='A'+i;
if (RegDeleteKey(keyorder,name)!=ERROR_SUCCESS)
return fail("Delete-KeyLoop");
}
if (RegCloseKey(keyorder)!=ERROR_SUCCESS)
return fail("Close-KeyOrder");
if (RegDeleteKey(wine,"TestKeyOrder")!=ERROR_SUCCESS)
return fail("DeleteKey-Key");
return 0;
}
//---------------------------------------------------------------------------
More information about the wine-devel
mailing list