Я знаю, что это может быть не то, что вам нужно, а просто включить ATLBase.h, а затем использовать шаблон CComPtr.
Затем вы просто используете
CComPtr< IDirect3DSurface9 > surf;
pDevice->GetBackBuffer( 0, 0, D3DBACKBUFFER_TYPE_MONO, &surf );
Затем вы можете скопировать его в другой CComPtr, и он обрабатывает все AddRefs и Releases для вас. Очень полезный шаблон класса.