mirror of
https://github.com/reactos/reactos.git
synced 2025-04-25 08:00:24 +00:00
- Formatting fix. No code change
svn path=/trunk/; revision=38646
This commit is contained in:
parent
8560b3bcc3
commit
174b42a736
1 changed files with 285 additions and 280 deletions
|
@ -20,12 +20,11 @@ typedef DWORD (WINAPI *CMP_UNREGNOTIFY) (ULONG );
|
|||
|
||||
static HINSTANCE hSetupApi = NULL;
|
||||
|
||||
BOOL WINAPI _InternalLoadString
|
||||
(
|
||||
HINSTANCE hInstance,
|
||||
BOOL
|
||||
WINAPI
|
||||
_InternalLoadString(HINSTANCE hInstance,
|
||||
UINT uID,
|
||||
PUNICODE_STRING pwstrDest
|
||||
)
|
||||
PUNICODE_STRING pwstrDest)
|
||||
{
|
||||
HRSRC hrsStringTable;
|
||||
HGLOBAL hResource;
|
||||
|
@ -34,7 +33,7 @@ BOOL WINAPI _InternalLoadString
|
|||
unsigned l = uID % 16; /* (1) */
|
||||
|
||||
/* parameter validation */
|
||||
if(IsBadWritePtr(pwstrDest, sizeof(UNICODE_STRING)))
|
||||
if (IsBadWritePtr(pwstrDest, sizeof(UNICODE_STRING)))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
|
@ -47,27 +46,24 @@ BOOL WINAPI _InternalLoadString
|
|||
(actual resource ids) start from 1. See (1) and (2)
|
||||
*/
|
||||
/* TODO: some sort of cache, here, would be great */
|
||||
hrsStringTable = FindResourceW
|
||||
(
|
||||
(HMODULE)hInstance,
|
||||
hrsStringTable = FindResourceW((HMODULE)hInstance,
|
||||
MAKEINTRESOURCEW((uID / 16) + 1), /* (2) */
|
||||
RT_STRING
|
||||
);
|
||||
RT_STRING);
|
||||
|
||||
/* failure */
|
||||
if(hrsStringTable == NULL) return FALSE;
|
||||
if (hrsStringTable == NULL) return FALSE;
|
||||
|
||||
/* load the string table into memory */
|
||||
hResource = LoadResource((HMODULE)hInstance, hrsStringTable);
|
||||
|
||||
/* failure */
|
||||
if(hResource == NULL) return FALSE;
|
||||
if (hResource == NULL) return FALSE;
|
||||
|
||||
/* lock the resource into memory */
|
||||
pStringTable = LockResource(hResource);
|
||||
|
||||
/* failure */
|
||||
if(pStringTable == NULL) return FALSE;
|
||||
if (pStringTable == NULL) return FALSE;
|
||||
|
||||
/*
|
||||
string tables are packed Unicode Pascal strings. The first WCHAR contains the
|
||||
|
@ -82,7 +78,7 @@ BOOL WINAPI _InternalLoadString
|
|||
}
|
||||
|
||||
/* we've reached the string of interest */
|
||||
if((*pStringTable) == 0)
|
||||
if ((*pStringTable) == 0)
|
||||
{
|
||||
/* the string is empty (unallocated) */
|
||||
SetLastError(ERROR_RESOURCE_NAME_NOT_FOUND);
|
||||
|
@ -103,13 +99,12 @@ BOOL WINAPI _InternalLoadString
|
|||
/*
|
||||
* @implemented
|
||||
*/
|
||||
int WINAPI LoadStringA
|
||||
(
|
||||
HINSTANCE hInstance,
|
||||
int
|
||||
WINAPI
|
||||
LoadStringA(HINSTANCE hInstance,
|
||||
UINT uID,
|
||||
LPSTR lpBuffer,
|
||||
int nBufferMax
|
||||
)
|
||||
int nBufferMax)
|
||||
{
|
||||
UNICODE_STRING wstrResStr;
|
||||
ANSI_STRING strBuf;
|
||||
|
@ -117,19 +112,19 @@ int WINAPI LoadStringA
|
|||
|
||||
/* parameter validation */
|
||||
|
||||
if(nBufferMax < 1)
|
||||
if (nBufferMax < 1)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(IsBadWritePtr(lpBuffer, nBufferMax * sizeof(lpBuffer[0])))
|
||||
if (IsBadWritePtr(lpBuffer, nBufferMax * sizeof(lpBuffer[0])))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* get the UNICODE_STRING descriptor of the in-memory image of the string */
|
||||
if(!_InternalLoadString(hInstance, uID, &wstrResStr))
|
||||
if (!_InternalLoadString(hInstance, uID, &wstrResStr))
|
||||
{
|
||||
/* failure */
|
||||
return 0;
|
||||
|
@ -144,11 +139,16 @@ int WINAPI LoadStringA
|
|||
strBuf.MaximumLength = nBufferMax * sizeof(CHAR);
|
||||
strBuf.Buffer = lpBuffer;
|
||||
|
||||
retSize = WideCharToMultiByte(CP_ACP, 0, wstrResStr.Buffer,
|
||||
retSize = WideCharToMultiByte(CP_ACP,
|
||||
0,
|
||||
wstrResStr.Buffer,
|
||||
wstrResStr.Length / sizeof(WCHAR),
|
||||
strBuf.Buffer, strBuf.MaximumLength, NULL, NULL);
|
||||
strBuf.Buffer,
|
||||
strBuf.MaximumLength,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
if(!retSize)
|
||||
if (!retSize)
|
||||
{
|
||||
/* failure */
|
||||
return 0;
|
||||
|
@ -159,7 +159,7 @@ int WINAPI LoadStringA
|
|||
}
|
||||
|
||||
/* the ANSI string may not be null-terminated */
|
||||
if(strBuf.Length >= strBuf.MaximumLength)
|
||||
if (strBuf.Length >= strBuf.MaximumLength)
|
||||
{
|
||||
/* length greater than the buffer? whatever */
|
||||
int nStringLen = strBuf.MaximumLength / sizeof(CHAR) - 1;
|
||||
|
@ -184,35 +184,30 @@ int WINAPI LoadStringA
|
|||
/*
|
||||
* @implemented
|
||||
*/
|
||||
int WINAPI LoadStringW
|
||||
(
|
||||
HINSTANCE hInstance,
|
||||
int
|
||||
WINAPI
|
||||
LoadStringW(HINSTANCE hInstance,
|
||||
UINT uID,
|
||||
LPWSTR lpBuffer,
|
||||
int nBufferMax
|
||||
)
|
||||
int nBufferMax)
|
||||
{
|
||||
UNICODE_STRING wstrResStr;
|
||||
int nStringLen;
|
||||
|
||||
/* parameter validation */
|
||||
if
|
||||
(
|
||||
(nBufferMax < 0) ||
|
||||
(lpBuffer == NULL) ||
|
||||
if ((nBufferMax < 0) || (lpBuffer == NULL) ||
|
||||
((nBufferMax > 0) && IsBadWritePtr(lpBuffer, nBufferMax * sizeof(lpBuffer[0]))) ||
|
||||
/* undocumented: If nBufferMax is 0, LoadStringW will copy a pointer to the
|
||||
in-memory image of the string to the specified buffer and return the length
|
||||
of the string in WCHARs */
|
||||
((nBufferMax == 0) && IsBadWritePtr(lpBuffer, sizeof(lpBuffer)))
|
||||
)
|
||||
((nBufferMax == 0) && IsBadWritePtr(lpBuffer, sizeof(lpBuffer))))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* get the UNICODE_STRING descriptor of the in-memory image of the string */
|
||||
if(!_InternalLoadString(hInstance, uID, &wstrResStr))
|
||||
if (!_InternalLoadString(hInstance, uID, &wstrResStr))
|
||||
{
|
||||
/* failure */
|
||||
return 0;
|
||||
|
@ -224,7 +219,7 @@ int WINAPI LoadStringW
|
|||
if (nBufferMax > 0)
|
||||
{
|
||||
/* the buffer must be enough to contain the string and the null terminator */
|
||||
if(nBufferMax < (nStringLen + 1))
|
||||
if (nBufferMax < (nStringLen + 1))
|
||||
{
|
||||
/* otherwise, the string is truncated */
|
||||
nStringLen = nBufferMax - 1;
|
||||
|
@ -250,25 +245,26 @@ int WINAPI LoadStringW
|
|||
*/
|
||||
HDEVNOTIFY
|
||||
WINAPI
|
||||
RegisterDeviceNotificationW(
|
||||
HANDLE hRecipient,
|
||||
RegisterDeviceNotificationW(HANDLE hRecipient,
|
||||
LPVOID NotificationFilter,
|
||||
DWORD Flags
|
||||
)
|
||||
DWORD Flags)
|
||||
{
|
||||
DWORD ConfigRet = 0;
|
||||
CMP_REGNOTIFY RegNotify = NULL;
|
||||
HDEVNOTIFY hDevNotify = NULL;
|
||||
if ( hSetupApi == NULL ) hSetupApi = LoadLibraryA("SETUPAPI.DLL");
|
||||
if ( hSetupApi == NULL ) return NULL;
|
||||
RegNotify = (CMP_REGNOTIFY) GetProcAddress ( hSetupApi, "CMP_RegisterNotification");
|
||||
|
||||
if (hSetupApi == NULL) hSetupApi = LoadLibraryA("SETUPAPI.DLL");
|
||||
if (hSetupApi == NULL) return NULL;
|
||||
|
||||
RegNotify = (CMP_REGNOTIFY) GetProcAddress(hSetupApi, "CMP_RegisterNotification");
|
||||
if (RegNotify == NULL)
|
||||
{
|
||||
FreeLibrary ( hSetupApi );
|
||||
FreeLibrary(hSetupApi);
|
||||
hSetupApi = NULL;
|
||||
return NULL;
|
||||
}
|
||||
ConfigRet = RegNotify ( hRecipient, NotificationFilter, Flags, (PULONG) &hDevNotify);
|
||||
|
||||
ConfigRet = RegNotify(hRecipient, NotificationFilter, Flags, (PULONG) &hDevNotify);
|
||||
if (ConfigRet != CR_SUCCESS)
|
||||
{
|
||||
switch (ConfigRet)
|
||||
|
@ -276,17 +272,21 @@ RegisterDeviceNotificationW(
|
|||
case CR_OUT_OF_MEMORY:
|
||||
SetLastError (ERROR_NOT_ENOUGH_MEMORY);
|
||||
break;
|
||||
|
||||
case CR_INVALID_POINTER:
|
||||
SetLastError (ERROR_INVALID_PARAMETER);
|
||||
break;
|
||||
|
||||
case CR_INVALID_DATA:
|
||||
SetLastError (ERROR_INVALID_DATA);
|
||||
break;
|
||||
|
||||
default:
|
||||
SetLastError (ERROR_SERVICE_SPECIFIC_ERROR);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return hDevNotify;
|
||||
}
|
||||
|
||||
|
@ -296,21 +296,23 @@ RegisterDeviceNotificationW(
|
|||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
UnregisterDeviceNotification(
|
||||
HDEVNOTIFY Handle)
|
||||
UnregisterDeviceNotification(HDEVNOTIFY Handle)
|
||||
{
|
||||
DWORD ConfigRet = 0;
|
||||
CMP_UNREGNOTIFY UnRegNotify = NULL;
|
||||
if ( hSetupApi == NULL ) hSetupApi = LoadLibraryA("SETUPAPI.DLL");
|
||||
if ( hSetupApi == NULL ) return FALSE;
|
||||
UnRegNotify = (CMP_UNREGNOTIFY) GetProcAddress ( hSetupApi, "CMP_UnregisterNotification");
|
||||
|
||||
if (hSetupApi == NULL) hSetupApi = LoadLibraryA("SETUPAPI.DLL");
|
||||
if (hSetupApi == NULL) return FALSE;
|
||||
|
||||
UnRegNotify = (CMP_UNREGNOTIFY) GetProcAddress(hSetupApi, "CMP_UnregisterNotification");
|
||||
if (UnRegNotify == NULL)
|
||||
{
|
||||
FreeLibrary ( hSetupApi );
|
||||
FreeLibrary(hSetupApi);
|
||||
hSetupApi = NULL;
|
||||
return FALSE;
|
||||
}
|
||||
ConfigRet = UnRegNotify ( (ULONG) Handle );
|
||||
|
||||
ConfigRet = UnRegNotify((ULONG) Handle );
|
||||
if (ConfigRet != CR_SUCCESS)
|
||||
{
|
||||
switch (ConfigRet)
|
||||
|
@ -318,15 +320,18 @@ UnregisterDeviceNotification(
|
|||
case CR_INVALID_POINTER:
|
||||
SetLastError (ERROR_INVALID_PARAMETER);
|
||||
break;
|
||||
|
||||
case CR_INVALID_DATA:
|
||||
SetLastError (ERROR_INVALID_DATA);
|
||||
break;
|
||||
|
||||
default:
|
||||
SetLastError (ERROR_SERVICE_SPECIFIC_ERROR);
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue