none
如何使用IMAPI2 的 IDiscRecorder2Ex Interface? RRS feed

  • 问题

  • 我在MSDN里查到了它的用法:http://msdn.microsoft.com/en-us/library/aa365408(VS.85).aspx,但有只简单的一句:

    To get an instance of this interface, create an instance of the IDiscRecorder2 interface and then call the IDiscRecorder2::QueryInterface method to retrieve the IDiscRecorder2Ex interface.

    看得不是很明白,能不能请哪位高手指教一下,到底应该怎么创建 IDiscRecorder2Ex 的实例?在我的代码中,已经成功的创建了一个 IDiscRecorder2 的实例了,或者怎么通过已经创建的 IDiscRecorder2 的实例去获取 IDiscRecorder2Ex 的实例?我想应该就是一句话的问题,谢谢。
        IDiscRecorder2* discRecorder;
        HRESULT         hResult;
        
        hResult = CoCreateInstance(__uuidof(MsftDiscRecorder2), NULL, CLSCTX_INPROC_SERVER,
            __uuidof(IDiscRecorder2), (void**)&discRecorder);
        if (!SUCCEEDED(hResult))
        {
            errorMessage = String::Format(L"Unable to Initialize IDiscRecorder2 - Error:0x%08x", hResult);
            return false;
        }   

    2009年11月19日 2:53

答案

  • 呵呵,还是自己来吧,试验了没问题:

        IDiscRecorder2*     discRecorder;
        IDiscRecorder2Ex*   discRecorderEx;
        HRESULT             hResult;
        
        hResult = CoCreateInstance(__uuidof(MsftDiscRecorder2), NULL, CLSCTX_INPROC_SERVER,
            __uuidof(IDiscRecorder2), (void**)&discRecorder);
        if (!SUCCEEDED(hResult))
        {
            errorMessage = String::Format(L"Unable to Initialize IDiscRecorder2 - Error:0x%08x", hResult);
            return false;
        }
        hResult = discRecorder->QueryInterface<IDiscRecorder2Ex>((IDiscRecorder2Ex**)&discRecorderEx);
        if (!SUCCEEDED(hResult))
        {
            errorMessage = String::Format(L"Unable to Initialize IDiscRecorder2Ex - Error:0x%08x", hResult);
            return false;
        }
        
    2009年11月19日 9:25