mirror of https://github.com/dahall/Vanara.git
Added Wireless Ad Hoc interfaces to WlanApi assembly.
parent
f33d7e4c1c
commit
c70f8bc29b
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,99 @@
|
||||||
|
using NUnit.Framework;
|
||||||
|
using System;
|
||||||
|
using Vanara.InteropServices;
|
||||||
|
using Vanara.PInvoke;
|
||||||
|
using Vanara.PInvoke.Tests;
|
||||||
|
using static Vanara.PInvoke.WlanApi;
|
||||||
|
|
||||||
|
namespace WlanApi
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class AdhocTests
|
||||||
|
{
|
||||||
|
public const string ADHOC_PWD = "adhocpwd4testing";
|
||||||
|
public const string ADHOC_SSID = "ADHOCWIFI";
|
||||||
|
public const int geoId = 244; // USA
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void AdhocMgrTest()
|
||||||
|
{
|
||||||
|
IDot11AdHocManager AdHocManager = new();
|
||||||
|
cManagerSink mSink = new();
|
||||||
|
using var pConnectionPointContainer = new ComConnectionPoint(AdHocManager, mSink);
|
||||||
|
|
||||||
|
var networks = AdHocManager.GetIEnumDot11AdHocNetworks();
|
||||||
|
|
||||||
|
IDot11AdHocNetwork myNet = null;
|
||||||
|
foreach (var network in new Vanara.Collections.IEnumFromCom<IDot11AdHocNetwork>(networks.Next, networks.Reset))
|
||||||
|
{
|
||||||
|
var ssid = network.GetSSID();
|
||||||
|
TestContext.WriteLine("\tssid = {0}", ssid);
|
||||||
|
if (ssid == ADHOC_SSID)
|
||||||
|
myNet = network;
|
||||||
|
}
|
||||||
|
|
||||||
|
var sink = new cSink();
|
||||||
|
if (myNet is not null)
|
||||||
|
{
|
||||||
|
using var netcp = new ComConnectionPoint(myNet, sink);
|
||||||
|
myNet.Connect(ADHOC_PWD, geoId, false, false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var securitySettings = new cSecuritySettings();
|
||||||
|
myNet = AdHocManager.CreateNetwork(ADHOC_SSID, ADHOC_PWD, geoId, default, securitySettings);
|
||||||
|
using var netcp = new ComConnectionPoint(myNet, sink);
|
||||||
|
AdHocManager.CommitCreatedNetwork(myNet, false, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class cManagerSink : IDot11AdHocManagerNotificationSink
|
||||||
|
{
|
||||||
|
HRESULT IDot11AdHocManagerNotificationSink.OnInterfaceAdd(IDot11AdHocInterface pIAdHocInterface)
|
||||||
|
{
|
||||||
|
TestContext.Write("[ManagerNotif] New interface\n");
|
||||||
|
return HRESULT.S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT IDot11AdHocManagerNotificationSink.OnInterfaceRemove(in Guid Signature)
|
||||||
|
{
|
||||||
|
TestContext.Write("[ManagerNotif] interface removed\n");
|
||||||
|
return HRESULT.S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT IDot11AdHocManagerNotificationSink.OnNetworkAdd(IDot11AdHocNetwork pIAdHocNetwork)
|
||||||
|
{
|
||||||
|
TestContext.Write("[ManagerNotif] New network : {0}\n", pIAdHocNetwork.GetSSID());
|
||||||
|
return HRESULT.S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT IDot11AdHocManagerNotificationSink.OnNetworkRemove(in Guid Signature)
|
||||||
|
{
|
||||||
|
TestContext.Write("[ManagerNotif] network removed\n");
|
||||||
|
return HRESULT.S_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class cSecuritySettings : IDot11AdHocSecuritySettings
|
||||||
|
{
|
||||||
|
DOT11_ADHOC_AUTH_ALGORITHM IDot11AdHocSecuritySettings.GetDot11AuthAlgorithm() => DOT11_ADHOC_AUTH_ALGORITHM.DOT11_ADHOC_AUTH_ALGO_80211_OPEN;
|
||||||
|
|
||||||
|
DOT11_ADHOC_CIPHER_ALGORITHM IDot11AdHocSecuritySettings.GetDot11CipherAlgorithm() => DOT11_ADHOC_CIPHER_ALGORITHM.DOT11_ADHOC_CIPHER_ALGO_WEP;
|
||||||
|
}
|
||||||
|
|
||||||
|
private class cSink : IDot11AdHocNetworkNotificationSink
|
||||||
|
{
|
||||||
|
HRESULT IDot11AdHocNetworkNotificationSink.OnConnectFail(DOT11_ADHOC_CONNECT_FAIL_REASON reason)
|
||||||
|
{
|
||||||
|
TestContext.WriteLine($"[NetworkNotif] Connection failed : {reason}");
|
||||||
|
return HRESULT.S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT IDot11AdHocNetworkNotificationSink.OnStatusChange(DOT11_ADHOC_NETWORK_CONNECTION_STATUS status)
|
||||||
|
{
|
||||||
|
TestContext.WriteLine($"[NetworkNotif] Status changed : {status}");
|
||||||
|
return HRESULT.S_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue