Implementation of 2 Win98 by-ordinal SHELL32 routines. Helps Win98
Explorer work better.
This commit is contained in:
parent
09c71b1c2d
commit
cdff5431e0
@ -248,8 +248,8 @@ init Shell32LibMain
|
|||||||
240 stub SHEmptyRecycleBinA@12 # exported by name
|
240 stub SHEmptyRecycleBinA@12 # exported by name
|
||||||
241 stub SHEmptyRecycleBinW@12 # exported by name
|
241 stub SHEmptyRecycleBinW@12 # exported by name
|
||||||
242 stdcall SHFileOperation (ptr) SHFileOperationAW # exported by name
|
242 stdcall SHFileOperation (ptr) SHFileOperationAW # exported by name
|
||||||
243 stdcall SHFileOperationA (ptr) SHFileOperationA # exported by name
|
243 stdcall shell32_243(long long) shell32_243
|
||||||
244 stdcall SHFileOperationW (ptr) SHFileOperationW # exported by name
|
244 stdcall SHInitRestricted(ptr ptr) SHInitRestricted # win98+ only, by ordinal
|
||||||
245 stub SHFormatDrive@16 # exported by name
|
245 stub SHFormatDrive@16 # exported by name
|
||||||
246 stub SHFreeNameMappings@4 # exported by name
|
246 stub SHFreeNameMappings@4 # exported by name
|
||||||
247 stdcall SHGetDataFromIDListA (ptr ptr long ptr long) SHGetDataFromIDListA
|
247 stdcall SHGetDataFromIDListA (ptr ptr long ptr long) SHGetDataFromIDListA
|
||||||
@ -387,3 +387,8 @@ init Shell32LibMain
|
|||||||
1221 stdcall SHGetSpecialFolderPathA(long ptr long long) SHGetSpecialFolderPathA # win98:292
|
1221 stdcall SHGetSpecialFolderPathA(long ptr long long) SHGetSpecialFolderPathA # win98:292
|
||||||
1222 stdcall DoEnvironmentSubstA (str str) DoEnvironmentSubstA # win98:293
|
1222 stdcall DoEnvironmentSubstA (str str) DoEnvironmentSubstA # win98:293
|
||||||
1223 stdcall DoEnvironmentSubstW (wstr wstr) DoEnvironmentSubstW # win98:204
|
1223 stdcall DoEnvironmentSubstW (wstr wstr) DoEnvironmentSubstW # win98:204
|
||||||
|
|
||||||
|
# by-name routines relocated in win98
|
||||||
|
|
||||||
|
1224 stdcall SHFileOperationA (ptr) SHFileOperationA # exported by name
|
||||||
|
1225 stdcall SHFileOperationW (ptr) SHFileOperationW # exported by name
|
@ -20,6 +20,10 @@
|
|||||||
|
|
||||||
DEFAULT_DEBUG_CHANNEL(shell)
|
DEFAULT_DEBUG_CHANNEL(shell)
|
||||||
|
|
||||||
|
/* shell policy data */
|
||||||
|
#define SHELL_MAX_POLICIES 57 /* number in Win98 */
|
||||||
|
unsigned long shell_policies[SHELL_MAX_POLICIES];
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SHChangeNotifyRegister [SHELL32.2]
|
* SHChangeNotifyRegister [SHELL32.2]
|
||||||
*
|
*
|
||||||
@ -361,6 +365,57 @@ DWORD WINAPI SHRestricted (DWORD pol) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* SHInitRestricted [SHELL32.244]
|
||||||
|
*
|
||||||
|
* Win98+ by-ordinal only routine called by Explorer and MSIE 4 and 5.
|
||||||
|
*
|
||||||
|
* INPUTS
|
||||||
|
* Two inputs: one is a string or NULL. If non-NULL the pointer
|
||||||
|
* should point to a string containing the following exact text:
|
||||||
|
* "Software\Microsoft\Windows\CurrentVersion\Policies".
|
||||||
|
* The other input is unused.
|
||||||
|
*
|
||||||
|
* NOTES
|
||||||
|
* If the input is non-NULL and does not point to a string containing
|
||||||
|
* that exact text the routine will do nothing.
|
||||||
|
*
|
||||||
|
* If the text does match or the pointer is NULL, then the routine
|
||||||
|
* will init SHRestricted()'s policy table to all 0xffffffff and
|
||||||
|
* returns 0xffffffff as well.
|
||||||
|
*
|
||||||
|
* I haven't yet run into anything calling this with inputs other than
|
||||||
|
* (NULL, NULL), so I may have the inputs reversed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOL WINAPI SHInitRestricted(LPSTR inpRegKey, LPSTR parm2)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
TRACE("(%p, %p)\n", inpRegKey, parm2);
|
||||||
|
|
||||||
|
/* first check - if input is non-NULL and points to the secret
|
||||||
|
key string, then pass. Otherwise return 0.
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (inpRegKey != (LPSTR)NULL)
|
||||||
|
{
|
||||||
|
if (lstrcmpiA(inpRegKey, "Software\\Microsoft\\Windows\\CurrentVersion\\Policies"))
|
||||||
|
{
|
||||||
|
/* doesn't match, fail */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* check passed, init all policy table entries with 0xffffffff */
|
||||||
|
for (i = 0; i < SHELL_MAX_POLICIES; i++)
|
||||||
|
{
|
||||||
|
shell_policies[i] = 0xffffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0xffffffff;
|
||||||
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SHCreateDirectory [SHELL32.165]
|
* SHCreateDirectory [SHELL32.165]
|
||||||
*
|
*
|
||||||
@ -1319,3 +1374,15 @@ HRESULT WINAPI DoEnvironmentSubstAW(LPVOID x, LPVOID y)
|
|||||||
return DoEnvironmentSubstA(x, y);
|
return DoEnvironmentSubstA(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* shell32_243 [SHELL32.243]
|
||||||
|
*
|
||||||
|
* Win98+ by-ordinal routine. In Win98 this routine returns zero and
|
||||||
|
* does nothing else. Possibly this does something in NT or SHELL32 5.0?
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
BOOL WINAPI shell32_243(DWORD a, DWORD b)
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user