Hi Jefferson,
+typedef struct { + IWMReaderCallback IWMReaderCallback_iface; + LONG ref; + HRESULT (*onStatusCallback)(WMT_STATUS, HRESULT, WMT_ATTR_DATATYPE, BYTE*, void*, void*); + HRESULT (*onSampleCallback)(DWORD, QWORD, QWORD, DWORD, INSSBuffer*, void*, void*); + void *pvCallbackContext; +} TestWMReaderCallback;
I'm still a little confused as to why you need this structure when the IWMReaderCallbackVtbl with a few globals would work just as well.
+static HRESULT onStatus_test_wmreader_play_wma( + WMT_STATUS status, + HRESULT hr, + WMT_ATTR_DATATYPE dwType, + BYTE *pValue, + void *pvContext, + void *pvCallbackContext) +{ + struct callback_context_test_wmreader_play_wma *pTestContext = + (struct callback_context_test_wmreader_play_wma*)pvCallbackContext; + DWORD *dwordValue; + + CHECK_EXPECT(onStatus); + ok(status == onStatus_expected_statuses_test_wmreader_play_wma[pTestContext->onStatus_call_count], + "onStatus called with unexpected status: %d\n", status); + if (status == WMT_OPENED) { + ok(pvContext == pTestContext->pvContextOpen, + "onStatus was not passed pvContext: expected %p, actual %p\n", pTestContext->pvContextOpen, pvContext); + } + else /* status == WMT_STARTED, or later */ { + ok(pvContext == pTestContext->pvContextStart, + "onStatus was not passed pvContext: expected %p, actual %p\n", pTestContext->pvContextStart, pvContext); + } + switch (status) { + case WMT_STARTED: + // MSDN says dwType is a QWORD, but it is actually a DWORD + ok(dwType == WMT_TYPE_DWORD, "onStatus pValue not WMT_TYPE_QWORD (%d), but %d\n", (int)WMT_TYPE_DWORD, dwType); WMT_TYPE_QWORD typo?
+ dwordValue = (DWORD*)pValue; + ok(*dwordValue == 0, "onStatus call for WMT_STARTED not passed correct starting timestamp: %u\n", *dwordValue); + SET_EXPECT(onSample); + break; + default: + break; + } The switch and if could be merged
+ /* Get format count. */ + formatCount = 0; + hr = IWMReader_GetOutputFormatCount(reader, 0, &formatCount); + todo_wine ok(hr == S_OK, "Failed to get output format count: 0x%08x\n", hr); formatCount should be checked
Best Regards Alistair Leslie-Hughes