Поскольку возвращаемое функцией значение используется для сообщения об ошибке, как функции возвращают необходимую информацию вызывающей стороне?
Например: IDirect3D9::CreateDevice метод
Поскольку возвращаемое функцией значение используется для сообщения об ошибке, как функции возвращают необходимую информацию вызывающей стороне?
Например: 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
}
D3DPRESENT_PARAMETERS
обновляется (на что указывает пометка out
), а pDevice
присваивается указатель на IDirect3DDevice9
. Все это, конечно, предполагает, что возвращаемое значение функции равно S_OK
, если нет... все ставки сняты.
- person Mgetz; 01.07.2013