Release PreviewでConsumer Previewで使えたActivateAudioInterfaceがdeprecateになってしまった。もともとドキュメント化もされていないようなAPIなので使えなくなっても当然だが。代わりにActivateAudioInterfaceAsyncが使えるようになったが、これがどうにも不便そうなAPIなのだ。直接taskテンプレートが使えなさそうな引数や戻り値の構成になっているのだ。
STDAPI ActivateAudioInterfaceAsync(
_In_ LPCWSTR deviceInterfacePath,
_In_ REFIID riid,
_In_ PROPVARIANT *activationParams,
_In_ IActivateAudioInterfaceCompletionHandler *completionHandler,
_COM_Outptr_ IActivateAudioInterfaceAsyncOperation **activationOperation
);
「使えなさそう」としか言えないのはtaskテンプレートに詳しくないからだが、持っている知識だけで言うとIActivateAudioInterfaceAsyncOperationが戻り値でないとtaskテンプレートで扱えない。taskテンプレートが使えないと非同期処理で簡潔なコードが書けない。あ、でもIActivateAudioInterfaceAsyncOperationを返すようなラッパを噛ませればいいのか。しかしこのAPIを非同期にする意味ってあるのかね。処理に50ms以上かかるということもなさそうだしねぇ...。あえて非同期で書かないほうがユーザーに対する応答処理も速そうな気がするんだけど。