Playback Media -> put_playlist Fehler, bitte um Hilfe
-
Ich hab hier irgendwo einen Fehler.
Er kommt aber nicht beim Kompilieren, sondern erst zur LaufzeitDas ist der Code:
HRESULT CFinalPCPDlg::PutPlayList(IN ITTerminal *pITTerminal,IN BSTR bstrFileName) { // //check if really have a terminal // if(NULL == pITTerminal) { sendToOutputBox("PutPlayList: Check pITTerminal",S_FALSE); return E_UNEXPECTED; } // // Get ITMediaPlayback interface - only playback terminal object // exposes this interface // ITMediaPlayback* pMediaPlayback = NULL; HRESULT hr = pITTerminal->QueryInterface( IID_ITMediaPlayback, (void**)&pMediaPlayback); sendToOutputBox("PutPlayList: QI ITMediaPlayback",hr); if(FAILED(hr)) { return hr; } // //VARIANT to be passed to put_PlayList // VARIANT varPlaylist; VariantInit(&varPlaylist); // //Prepare SAFEARRAYBOUND for SAFEARRAY //Put file name into array with one element // SAFEARRAYBOUND DimensionBounds; DimensionBounds.lLbound = 1; // //number of files in play list - modify for more files // DimensionBounds.cElements = 1; // // Put file name into array at index 1 - see lLbound // long lArrayPos = 1; // //variant that will hold the BSTR - it will be added to SAFEARRAY // VARIANT* pvarArrayEntry = new VARIANT; if( pvarArrayEntry == NULL) { sendToOutputBox("PutPlayList: new VARIANT",hr); return E_OUTOFMEMORY; } VariantInit(pvarArrayEntry); // // Create SAFEARRAY // SAFEARRAY *pPlayListArray = NULL; pPlayListArray = SafeArrayCreate( VT_VARIANT, 1, &DimensionBounds); if( pPlayListArray == NULL) { sendToOutputBox("PutPlayList: save Array",hr); delete pvarArrayEntry; return E_OUTOFMEMORY; } // ------ HIER KOMMT ER NOCH OHNE PROBLEME AN // //repeat this for each file you want to add //you need to increment lArrayPos // pvarArrayEntry->vt = VT_BSTR; pvarArrayEntry->bstrVal = ::SysAllocString(bstrFileName); SafeArrayPutElement( pPlayListArray, &lArrayPos, pvarArrayEntry); VariantClear(pvarArrayEntry); // //prepare the variant for put_PlayList // V_VT(&varPlaylist) = VT_ARRAY | VT_VARIANT; V_ARRAY(&varPlaylist) = pPlayListArray; // //finally put play list // // ------ DER NÄCHSTE BEFEHL ERZEUGT EINEN FEHLER hr = pMediaPlayback->put_PlayList(varPlaylist); if(FAILED(hr)) { sendToOutputBox("PutPlayList: Put into playlist",hr); delete pvarArrayEntry; return E_OUTOFMEMORY; } // //clean up // delete pvarArrayEntry; pMediaPlayback->Release(); VariantClear(&varPlaylist); return hr; }Also irgendwo ziwschen den beiden //------------
ist er Fehler, ich habe schon die MSDN von vorne bis hinten x-mal durchforstet, und so sollte es gehen....Was mich verwundert: Wenn ich das Beispiel Programm mittels NMAKE
der Mircrosoft SDK kompiliere, dann funktionierts.
Kompiliere ich das Beispiel mit Visual Studio, kommen keine Fehler (die .EXE Dateien haben auch unterschiedliche Größen) und bei der Laufzeit dann die Fehlermeldung das er nicht put_playlist machen konnte....Was könnte das Problem sein? Hat jemand von euch irgendeine Vermutung?