簡體   English   中英

iTunes COM界面-無法將歌曲添加到資料庫

[英]iTunes COM interface - Cannot add song to library

我試圖將一個簡單的.mp3文件添加到iTunes庫中,但是當我調用AddFile()時,程序始終崩潰。 但是,當我調用get_Tracks()時,它返回一個有效的指針,因此我認為指向IITLibraryPlaylist的指針是有效的。 我究竟做錯了什么?

IiTunes* p_iTunes;
IITLibraryPlaylist* p_Library;
IITOperationStatus* status;
IITTrackCollection* iTrackCollection;

CoInitialize(0);
if (FAILED(CoCreateInstance(CLSID_iTunesApp, NULL, CLSCTX_LOCAL_SERVER, IID_IiTunes, (PVOID *)&p_iTunes))){
    p_iTunes->Release();
    CoUninitialize();
}
else{
    p_iTunes->get_LibraryPlaylist(&p_Library);

    p_Library->get_Tracks(&iTrackCollection); // This works, so I suppose p_Library is valid..
    long trackCount = 0;
    iTrackCollection->get_Count(&trackCount);

    p_Library->AddFile(L"C:\\asd\asd.mp3",&status); // crashes here
}

問題是您傳遞WCHAR*而不是正確分配的BSTR這導致未定義的行為

您應該首先使用SysAllocString()分配BSTR (不要忘記稍后釋放該字符串),或者最好使用ATL::CComBSTR_bstr_t類的包裝器類來管理BSTR壽命。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM