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 :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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 #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; }
Lorsque je demande au filtre d'ouvrir une nouvelle connection par :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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 AM_MEDIA_TYPE pmt; HRESULT hr; hr = pFilter->Load( URL.GetString(), &pmt );
Y'aurait-il un probleme lorsque deux taches differentes demandent une session internet?
Si quelqu'un a une idee...
Merci
Partager