Поскольку возвращаемое значение функции используется для сообщения об ошибке, как функции возвращают необходимую информацию вызывающей стороне?
Например:
IDirect3D9 :: CreateDevice метод
Так что, если вы посмотрите на эту ссылку, вы заметите, что она имеет некоторые параметры помечены Out
это важно, потому что это означает, что будет возвращено вызывающей стороне.
HRESULT CreateDevice(
[in] UINT Adapter,
[in] D3DDEVTYPE DeviceType,
[in] HWND hFocusWindow,
[in] DWORD BehaviorFlags,
[in, out] D3DPRESENT_PARAMETERS *pPresentationParameters,
[out, retval] IDirect3DDevice9 **ppReturnedDeviceInterface
);
В приведенном выше примере (скопирован и вставлен из ссылки MSDN), вы заметите параметр ppReturnedDeviceInterface
помечен как **
или указатель на указатель, вызывающая сторона передаст адрес своего указателя и вернет указатель на этот адрес. Так же D3DPRESENT_PARAMETERS
структура передана в pPresentationParameters
будет обновляться по возвращении, как отмечено out
аннотаций.
Пример:
IDirect3DDevice9 *pDevice = NULL;
HRESULT hr = pD3D->CreateDevice(
D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hwnd,
pPresentationParams,
&pDevice);
if(SUCCEEDED(hr))
{
//pDevice should be non null at this point
}
Других решений пока нет …