7,659
社区成员




HRESULT TryRapiConnect(DWORD dwTimeOut)
{
HRESULT hr = E_FAIL;
RAPIINIT riCopy;
bool fInitialized = false;
ZeroMemory(&riCopy, sizeof(riCopy));
riCopy.cbSize = sizeof(riCopy);
hr = CeRapiInitEx(&riCopy);
if (SUCCEEDED(hr))
{
DWORD dwRapiInit = 0;
fInitialized = true;
dwRapiInit = WaitForSingleObject(
riCopy.heRapiInit,
dwTimeOut);
if (WAIT_OBJECT_0 == dwRapiInit)
{
// heRapiInit signaled:
// set return error code to return value of RAPI Init function
hr = riCopy.hrRapiInit;
}
else if (WAIT_TIMEOUT == dwRapiInit)
{
// timed out: device is probably not connected
// or not responding
hr = HRESULT_FROM_WIN32(ERROR_TIMEOUT);
}
else
{
// WaitForSingleObject failed
hr = HRESULT_FROM_WIN32(GetLastError());
}
}
if (fInitialized && FAILED(hr))
{
CeRapiUninit();
}
return hr;
}