Previously these three methods returned E_NOTIMPL. SetPriority/GetPriority store the priority on the voice and validate it against SPVPRI_NORMAL, SPVPRI_ALERT and SPVPRI_OVER. GetStatus populates SPVOICESTATUS from speech_voice state: - ulCurrentStream tracks the stream currently being processed by speak_proc (set at the start of the worker so it reflects the in-flight stream, and sticks at the last processed value when idle, per MSDN). Stored as last_stream_num on speech_voice. - ulLastStreamQueued reuses the existing cur_stream_num counter, which is incremented before each Speak queues a task. - hrLastResult is the HRESULT of the most recently completed speak (set at the end of speak_proc). - dwRunningState is derived from async_wait_queue_empty(&queue, 0) so it correctly reports SPRS_DONE both when idle and after a purge clears queued tasks. This unblocks Overwatch 2's Audio Captions accessibility TTS, which calls SetPriority during voice setup and tight-polls GetStatus for SPRS_DONE between Speak calls. Add tests covering priority round-trips, GetStatus with a NULL pointer, and status fields before, during and after sync and async Speak calls. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=59749 -- https://gitlab.winehq.org/wine/wine/-/merge_requests/10906