begin process at 2008 07 06 00:06:15
1 205 401 membres
368 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : probleme avec CInternetSession / Directshow [ Windows / MFC ] (ERM_UK)

probleme avec CInternetSession / Directshow le 15/05/2008 11:25:11

ERM_UK
Bonjour,

Je developpe actuellement une application pour PDA avec VS 2005 SP1 et Windows Mobile 6 SDK. Cette application permet d'afficher une video (genre camera de surveillance) en temps reel a l'aide d'un filtre Directshow proprietaire via une URL. Je dois aussi recuper une liste d'evenements sur un serveur via, la aussi, une URL. La connexion au serveur pour la video se passe tres bien jusqu'a ce que je me connecte pour recuperer la liste d'evenements. Je peux me connecter plusieurs fois pour recuperer la listes sans probleme. Voici le code que j'utilise :

    #define MAXBUF 2048

    CInternetSession Session;
    CHttpConnection * pConnection = NULL;
    CString file, head;

    file.Format(L"events.cgi");
    head.Format(L"?mode=read&format=csv");

    CHttpFile* pFile1 = NULL;
    char* buffer = NULL;
    UINT nBytesRead = 0;
    DWORD dwStatus;

try
{
    char buffer[MAXBUF];
    pConnection = Session->GetHttpConnection(m_ServerURL, (INTERNET_PORT) 80);
    if(pConnection == NULL)
    {
        return TRUE;
    }

    pFile1 = pConnection->OpenRequest(1, file, NULL, 1, NULL, NULL, 0);
    if(pFile1 == NULL)
    {
        pConnection->Close();
        delete pConnection;
        return TRUE;
    }

    pFile1->AddRequestHeaders(head);
    pFile1->SendRequest();
    pFile1->QueryInfoStatusCode(dwStatus);

    nBytesRead = pFile1->Read(buffer, MAXBUF - 1);
    buffer[nBytesRead] = '\0';
    parseEventArray(buffer, nBytesRead);
}
catch (CInternetException* pEx)
{
    WCHAR errmess[256];
    pEx->GetErrorMessage((LPTSTR)&errmess, 256, NULL);
    MessageBox(L"Connection Error", L"Error", MB_OK | MB_ICONEXCLAMATION);
    //catch errors from WinInet
}

    if(pFile1) delete pFile1;
    if(pConnection)
    {
        pConnection->Close();
        delete pConnection;
    }


Je me suis appercu que le simple fait de demander une session Internet (CInternetSession Session;) sans meme ouvrir une connection fait que le filtre n'arrive plus a se connecter au serveur.

Lorsque je demande au filtre d'ouvrir une nouvelle connection par :

AM_MEDIA_TYPE  pmt;
HRESULT hr;
hr = pFilter->Load( URL.GetString(), &pmt );


il n'y a pas d'erreur, mais un peu plus tard, une tache s'arrete avec une erreur -1 et je recois un evenement 0x8020 du gestionnaire d'evenements du graph. 0x20 n'etant pas dans evcode.h, je ne sais pas a quoi cela correspond.

Y'aurait-il un probleme lorsque deux taches differentes demandent une session internet?

Si quelqu'un a une idee...

Merci

_____________________________________________
Complex problems have simple, easy to understand wrong answers.


Classé sous : buffer, probleme, session, pconnection, pfile1

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS