#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){VARIANT_BOOL vbBool;pSnk ->get_RequireLogin (& vbBool);//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;BSTR Password;for (long i = 0 ; i < lUserCount ; i++){pSnk->GetPassword (i,&Password);//do something with the password//..............................pSnk->GetUsername (i,&UserName);//do something with the name//..............................SysFreeString(UserName);SysFreeString(Password);}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_FirstConnection (&pcon);// Check all connections with the server.while(pcon){ILMNetSnkConnection* pnext;BSTR bstr;pcon->get_NextConnection(&pnext);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);VARIANT_BOOL connected;pcon->get_Connected(&connected);// check if this connection is disabled or not connectedif(enabled == VARIANT_FALSE || connected == VARIANT_FALSE){//if the connection is disabled//close this connection OPTIONALpcon->Close ();}pcon->Release();pcon = pnext;}//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);for(int i = 0 ; i < lRestrictionCount ; i++){BSTR bstrRestriction;pSnk->GetRestriction (i,&bstrRestriction);// do something with Restriction//..............................//free the Restriction nameSysFreeString(bstrRestriction);}long lRestriction;pSnk->FindRestriction (bstrAddress,&lRestriction);// Remove the Restriction from the userpSnk->RemoveRestriction (lRestriction);// Remove User2 from the registered users list.UserName = SysAllocString(L"User2");pSnk->FindUser (UserName,&ID);pSnk->RemoveUser(ID);SysFreeString(UserName);//Remove all restrctionspSnk->RemoveAllRestrictions ();pSnk->CloseAll ();pSnk->RemoveAllUsers();}pUnk->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
