In wine source code, NULL is defined as 0 in file��dlls/windowscodecs/ungif.h, line 66. I have tried to write like this:
1260 �� �� if(V_VT(arg) == VT_NULL) {
1261 �� �� �� �� V_VT(res) = VT_NULL;
1262 �� �� �� �� V_NULL(res) = NULL;
1263 �� �� }
1264 �� �� else {
1265 �� �� �� �� hres = to_double(arg, &v);
1266 �� �� �� �� if (FAILED(hres))
1267 �� �� �� �� �� �� return hres;
1268 �� �� �� ����
1269 �� �� �� �� if(res) {
1270 �� �� �� �� �� �� V_VT(res) = VT_R8;��
1271 �� �� �� �� �� �� V_R8(res) = v >= 0 ? v : -v;
1272 �� �� �� �� }
1273 �� �� }
1274 �� �� return S_OK;
But apparently this makes no sense: V_NULL is defined in��dlls/oleaut32/tests/vartest.c, not along with V_I2 in��include/oleauto.h; I don't know how give res a "Null" value in C.