「ActivateAudioInterfaceがdeprecateになってしまった」件で、私はIActivateAudioInterfaceAsyncOperationがIAsyncOperationの継承インターフェースかなと思っていたんだけど違っていた。IActivateAudioInterfaceAsyncOperationはレガシーCOMスタイルのインターフェースなので、たとえActivateAudioInterfaceAsync APIの戻り値がこれであってもtaskテンプレートでそのままではハンドルできないのであった。
STDAPI ActivateAudioInterfaceAsync(
_In_ LPCWSTR deviceInterfacePath,
_In_ REFIID riid,
_In_ PROPVARIANT *activationParams,
_In_ IActivateAudioInterfaceCompletionHandler *completionHandler,
_COM_Outptr_ IActivateAudioInterfaceAsyncOperation **activationOperation
);
Audio hardware offload sampleでもコールバックインターフェース(IActivateAudioInterfaceCompletionHandler)を継承したクラスを作って自前で処理しており、taskテンプレートは使用してなかった。コールバックインターフェースは単にIActivateAudioInterfaceCompletionHandlerを継承するだけかと思ったが、サンプルではRuntimeClassテンプレートを介していた。RuntimeClassテンプレートって何?
// Primary WASAPI Renderering Class
class WASAPIRenderer :
public RuntimeClass< RuntimeClassFlags< ClassicCom >, FtmBase, IActivateAudioInterfaceCompletionHandler >
{
public:
WASAPIRenderer();
新しいAPIだからWinRTみたくtask
6/1に見た限りではAPIドキュメントもまだRelease Previewに対応してなかった。Consumer Preview から Release Previewで何が変化したのかすべて列挙した表があればいいんだけど、この様子だとMSさんは作ってくれなさそうだな。。