#include "ltmm.h" #include "ILMNetSnk2.h" HRESULT AddNetTarget(); IltmmCapture *pCapture; void main() { BSTR sUser; BSTR sPassword; long lIndex = 0; long lOldConversion; long lConversion; long lCount = 0; CoInitialize(NULL); HRESULT hr = CoCreateInstance(CLSID_ltmmCapture, NULL, CLSCTX_INPROC_SERVER, IID_IltmmCapture, (void**) &pCapture); if(FAILED(hr)) { AfxMessageBox(TEXT("Can't instantiate capture library")); return; } AddNetTarget(); pCapture->EditGraph(); IUnknown* pUnk = NULL; pCapture->GetSubObject(ltmmCapture_Object_Sink, &pUnk); if(pUnk) { ILMNetSnk* pSnk = NULL; pUnk->QueryInterface(IID_ILMNetSnk, (void**) &pSnk); pUnk->Release(); if(pSnk) { //Require login with user name and password from the client. pSnk->put_RequireLogin(VARIANT_TRUE); //Get The current connection version. pSnk->get_ConnectionVersion(&lOldConversion); sUser = SysAllocString(L"User1"); sPassword = SysAllocString(L"P12345"); // add User1 to the server with the password "P12345" pSnk->AddUser(sUser, sPassword, &lIndex); // Free the user name and the password SysFreeString(sUser); SysFreeString(sPassword); pSnk->get_ConnectionVersion(&lConversion); if(lConversion != lOldConversion) { // the version number is updated after adding User1 } sUser = SysAllocString(L"User2"); sPassword = SysAllocString(L"ABC123"); // add User2 to the server with the password "ABC123" pSnk->AddUser(sUser, sPassword, &lIndex); // Free the user name and the password SysFreeString(sUser); SysFreeString(sPassword); long lUserCount; // get the count of registered user pSnk->get_UserCount(&lUserCount); BSTR UserName; for (long i = 0 ; i < lUserCount ; i++) { pSnk->GetUsername(i,&UserName); //do something with the name SysFreeString(UserName); } UserName = SysAllocString(L"User2");; //Find the ID of a given user long ID; pSnk->FindUser(UserName,&ID); //change the password for the user ID. sPassword = SysAllocString(L"XYZ0"); pSnk->SetPassword(ID,sPassword); SysFreeString(UserName); SysFreeString(sPassword); //get number of connections connected to the server. pSnk->get_ConnectionCount(&lCount); ILMNetSnkConnection* pcon; pSnk->FindConnection(1, &pcon); pcon->Release(); pSnk->get_LastConnection(&pcon); // Check all connections with the server. while(pcon) { ILMNetSnkConnection* pPrev; BSTR bstr; pcon->get_PrevConnection(&pPrev); long id; pcon->get_ID(&id); pcon->get_Username(&bstr); ::SysFreeString(bstr); pcon->get_Address(&bstr); //Enable the connection pcon->put_Enabled(VARIANT_TRUE); //Check if connection is enabled or not. VARIANT_BOOL enabled; pcon->get_Enabled(&enabled); // check if this connection is enabled if(enabled == VARIANT_FALSE) { //if the connection is disabled //close this connection OPTIONAL pcon->Close(); } pcon->Release(); pcon = pPrev; } //add a restriction to the client which has the IP = 10.0.0.5 //this will not allow him to connect to the server. BSTR bstrAddress = SysAllocString(L"10.0.0.5"); // Number of restrictions we have. long lRestrictionCount = 0; pSnk->AddRestriction(bstrAddress,&lRestrictionCount); SysFreeString(bstrAddress); // get Number of restriction pSnk->get_RestrictionCount(&lRestrictionCount); // Remove User2 from the registered users list. UserName = SysAllocString(L"User2"); pSnk->FindUser(UserName,&ID); pSnk->RemoveUser(ID); SysFreeString(UserName); } pSnk->CloseAll(); pSnk->Release(); } } HRESULT AddNetTarget() { IltmmTargetFormats* formats; HRESULT hr; hr = pCapture->get_TargetFormats(&formats); if(FAILED(hr)) return hr; BSTR bstr = SysAllocString(L"Net Server Target"); if(!bstr) { formats->Release(); return E_OUTOFMEMORY; } long index; hr = formats->Find(bstr, &index); if(FAILED(hr)) { formats->Release(); SysFreeString(bstr); return hr; } if(index == -1) { hr = formats->Add(bstr, -1); SysFreeString(bstr); if(FAILED(hr)) { formats->Release(); return hr; } long count; hr = formats->get_Count(&count); if(FAILED(hr)) { formats->Release(); return hr; } index = count - 1; IltmmTargetFormat* format; hr = formats->Item(index, &format); if(FAILED(hr)) { formats->Release(); return hr; } bstr = SysAllocString(L"@device:sw:{083863F1-70DE-11D0-BD40-00A0C911CE86}\\{E2B7DE05-38C5-11D5-91F6-00104BDB8FF9}"); if(!bstr) { format->Release(); formats->Remove(index); formats->Release(); return E_OUTOFMEMORY; } hr = format->put_Sink(bstr); SysFreeString(bstr); if(FAILED(hr)) { format->Release(); formats->Remove(index); formats->Release(); return hr; } bstr = SysAllocString(L"@device:sw:{083863F1-70DE-11D0-BD40-00A0C911CE86}\\{E2B7DE01-38C5-11D5-91F6-00104BDB8FF9}"); if(!bstr) { format->Release(); formats->Remove(index); formats->Release(); return E_OUTOFMEMORY; } hr = format->put_Mux(bstr); SysFreeString(bstr); if(FAILED(hr)) { format->Release(); formats->Remove(index); formats->Release(); return hr; } format->Release(); } else { SysFreeString(bstr); } formats->Release(); return S_OK; }