#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 passwordSysFreeString(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 passwordSysFreeString(sUser);SysFreeString(sPassword);long lUserCount;// get the count of registered userpSnk->get_UserCount(&lUserCount);BSTR UserName;for (long i = 0 ; i < lUserCount ; i++){pSnk->GetUsername(i,&UserName);//do something with the nameSysFreeString(UserName);}UserName = SysAllocString(L"User2");;//Find the ID of a given userlong 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 connectionpcon->put_Enabled(VARIANT_TRUE);//Check if connection is enabled or not.VARIANT_BOOL enabled;pcon->get_Enabled(&enabled);// check if this connection is enabledif(enabled == VARIANT_FALSE){//if the connection is disabled//close this connection OPTIONALpcon->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 restrictionpSnk->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;}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
