- g_WinVersion = get_host_winver();
- trace("Detected version: 0x%x\n", g_WinVersion);
- silence_debug_output();
+ WCHAR Buffer[MAX_PATH];
+ HRESULT hr, expect_hr;
+ int n;
+
+
+ _SEH2_TRY
+ {
+ hr = pSdbGetAppPatchDir(NULL, NULL, 0);
+ ok_hex(hr, S_FALSE);
+ }
+ _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ {
+ /* Some versions accept it, some don't */
+ trace("SdbGetAppPatchDir did not handle a NULL pointer very gracefully.\n");
+ }
+ _SEH2_END;
+
+
+
+ memset(Buffer, 0xbb, sizeof(Buffer));
+ hr = pSdbGetAppPatchDir(NULL, Buffer, 0);
+ if (g_WinVersion < WINVER_WIN7)
+ expect_hr = HRESULT_FROM_WIN32(ERROR_INVALID_PARAMETER);
+ else if (g_WinVersion < WINVER_WIN10)
+ expect_hr = S_OK;
+ else
+ expect_hr = S_FALSE;
+ ok_hex(hr, expect_hr);
+
+ if (g_WinVersion < WINVER_WIN7)
+ expect_hr = HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
+ else if (g_WinVersion < WINVER_WIN10)
+ expect_hr = S_OK;
+ else
+ expect_hr = TRUE;