STDMETHODIMP Next(ULONG celt,VARIANT __RPC_FAR *rgVar, ULONG __RPC_FAR *pCeltFetched)
	{
		HRESULT hr = S_FALSE;

		if ( pCeltFetched )
			*pCeltFetched = 0;

		int i = 0;

		while ( m_lCurrent<m_lMax && celt ) {
			CComVariant varCelt(++m_lCurrent);
			VariantInit(&rgVar[i]);

			IGame* pGame;
			hr = m_pGames->get_Item(&varCelt, &pGame);
			if ( FAILED(hr) )
				return hr;

			rgVar[i].vt = VT_DISPATCH;
			rgVar[i].ppdispVal = new IDispatch*;
			hr = pGame->QueryInterface(IID_IDispatch, (void**) &rgVar[i].pdispVal);
			pGame->Release();
			
			if ( FAILED(hr) ) 
				return hr;

			celt--;
			if ( pCeltFetched )
				(*pCeltFetched)++;

			i++;
		}

		return celt ? S_FALSE : S_OK;
	}