devenum: Fix the implementation of IEnumMoniker::Skip(), to match the MSDN specs.

oldstable
Peter Dons Tychsen 2008-01-05 00:05:34 +01:00 committed by Alexandre Julliard
parent 53f64a09cf
commit 787ccc8032
1 changed files with 12 additions and 0 deletions

View File

@ -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;