devenum: Fix the implementation of IEnumMoniker::Skip(), to match the MSDN specs.
This commit is contained in:
parent
53f64a09cf
commit
787ccc8032
|
@ -800,9 +800,21 @@ static HRESULT WINAPI DEVENUM_IEnumMoniker_Next(LPENUMMONIKER iface, ULONG celt,
|
|||
static HRESULT WINAPI DEVENUM_IEnumMoniker_Skip(LPENUMMONIKER iface, ULONG celt)
|
||||
{
|
||||
EnumMonikerImpl *This = (EnumMonikerImpl *)iface;
|
||||
DWORD subKeys;
|
||||
|
||||
TRACE("(%p)->(%d)\n", iface, celt);
|
||||
|
||||
/* Before incrementing, check if there are any more values to run thru.
|
||||
Some programs use the Skip() function to get the amount of devices */
|
||||
if(RegQueryInfoKeyW(This->hkey, NULL, NULL, NULL, &subKeys, NULL, NULL, NULL, NULL, NULL, NULL, NULL) != ERROR_SUCCESS)
|
||||
{
|
||||
return S_FALSE;
|
||||
}
|
||||
if((This->index + celt) >= subKeys)
|
||||
{
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
This->index += celt;
|
||||
|
||||
return S_OK;
|
||||
|
|
Loading…
Reference in New Issue