Packet Sniffer SDK DLL Edition

HNPSManager wrapper for C#

 Previous Next

File: HNPSManager.cs

using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Runtime.InteropServices;

namespace microOLAP.PSSDK
{
    /// <summary>
    /// Summary description for HNPSManager.
    /// </summary>
    public partial class HNPSManager : Component
    {
        #region DLL exports

        /// <summary>
        /// Creates an HNPSManager object.
        /// </summary>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrCreate")]
        private static extern IntPtr MgrCreate();

        /// <summary>
        /// Destroys an HNPSManager object.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrDestroy")]
        private static extern int MgrDestroy(IntPtr hMgr);

        /// <summary>
        /// Displays information about Packet Sniffer SDK.
        /// </summary>
        /// <param name="hMgr"></param>
        [DllImport("pssdk.dll", EntryPoint = "MgrAbout")]
        private static extern void MgrAbout(IntPtr hMgr);

        /// <summary>
        /// Returns the version number of the Packet Sniffer SDK library.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrGetVersionW", CharSet = CharSet.Unicode)]
        private static extern IntPtr MgrGetVersion(IntPtr hMgr);

        /// <summary>
        /// Returns the build number of the Packet Sniffer SDK library.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrGetBuildW", CharSet = CharSet.Unicode)]
        private static extern IntPtr MgrGetBuild(IntPtr hMgr);

        /// <summary>
        /// Returns the WANMonitor installation status.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrGetWanMonitorState")]
        private static extern bool MgrGetWanMonitorState(IntPtr hMgr);

        /// <summary>
        /// Sets the WANMonitor installation status.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <param name="bEnable"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrSetWanMonitorState")]
        private static extern bool MgrSetWanMonitorState(IntPtr hMgr, bool bEnable);

        /// <summary>
        /// Initializes Packet Sniffer SDK.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrInitialize")]
        private static extern int MgrInitialize(IntPtr hMgr);

        /// <summary>
        /// Returns the number of the HNAdapterConfig objects.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrGetAdaptersCfgCount")]
        private static extern int MgrGetAdaptersCfgCount(IntPtr hMgr);

        /// <summary>
        /// Returns the handle of the first HNAdapterConfig object.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrGetFirstAdapterCfg")]
        private static extern IntPtr MgrGetFirstAdapterCfg(IntPtr hMgr);

        /// <summary>
        /// Returns the handle of the next HNAdapterConfig object.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <param name="hCfg"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrGetNextAdapterCfg")]
        private static extern IntPtr MgrGetNextAdapterCfg(IntPtr hMgr, IntPtr hCfg);

        /// <summary>
        /// Refreshes the internal list of the HNAdapterConfig objects.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrRefreshAdapterList")]
        private static extern int MgrRefreshAdapterList(IntPtr hMgr);

        /// <summary>
        /// Sets the OnConfigChange event.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <param name="pfOnConfigChange"></param>
        /// <param name="Param"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrSetOnConfigChange")]
        private static extern IntPtr MgrSetOnConfigChange(IntPtr hMgr, CallBackOnConfigChange pfOnConfigChange, IntPtr Param);

        /// <summary>
        /// Return PSSDK initialization status.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrIsInitialized")]
        private static extern bool MgrIsInitialized(IntPtr hMgr);

        /// <summary>
        /// Return PSSDK protocol driver installation status for current version.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrIsProtocolInstalled")]
        private static extern bool MgrIsProtocolInstalled(IntPtr hMgr);

        /// <summary>
        /// Install PSSDK protocol driver for current version.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <param name="UniqueInstallID"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrInstallProtocolW", CharSet = CharSet.Unicode)]
        private static extern uint MgrInstallProtocol(IntPtr hMgr, string UniqueInstallID);

        /// <summary>
        /// Uninstall PSSDK protocol driver for current version.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <param name="UniqueInstallID"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrUninstallProtocolW", CharSet = CharSet.Unicode)]
        private static extern uint MgrUninstallProtocol(IntPtr hMgr, string UniqueInstallID);

        /// <summary>
        /// Return PSSDK loopback driver installation status for current version.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrIsLoopBackInstalled")]
        private static extern bool MgrIsLoopBackInstalled(IntPtr hMgr);

        /// <summary>
        /// Install PSSDK loopback driver for current version.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <param name="UniqueInstallID"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrInstallLoopBackW", CharSet = CharSet.Unicode)]
        private static extern uint MgrInstallLoopBack(IntPtr hMgr, string UniqueInstallID);

        /// <summary>
        /// Uninstall PSSDK loopback driver for current version.
        /// </summary>
        /// <param name="hMgr"></param>
        /// <param name="UniqueInstallID"></param>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrUninstallLoopBackW", CharSet = CharSet.Unicode)]
        private static extern uint MgrUninstallLoopBack(IntPtr hMgr, string UniqueInstallID);

        /// <summary>
        /// Unload protocol driver for current version of PSSDK (windows nt/2k/xp/2k3/vista).
        /// </summary>
        /// <returns></returns>
        [DllImport("pssdk.dll", EntryPoint = "MgrUnloadProtocolNtDriver", CharSet = CharSet.Unicode)]
        private static extern uint MgrUnloadProtocolNtDriver();

        #endregion

        #region HNPSManager events

        /// <summary>
        /// CallBack OnConfigChange.
        /// </summary>
        /// <param name="Param"></param>
        /// <param name="hConfig"></param>
        /// <param name="ChangeType"></param>
        private delegate void CallBackOnConfigChange(IntPtr Param, IntPtr hConfig, int ChangeType);

        /// <summary>
        /// CallBack variable OnConfigChange.
        /// </summary>
        private CallBackOnConfigChange pfOnConfigChange;

        /// <summary>
        /// OnConfigChange event handler.
        /// </summary>
        public event OnConfigChangeEventHandler OnConfigChange;

        #endregion        
        
        /// <summary>
        /// Handle of the HNPSManager object.
        /// </summary>
        private IntPtr hMgr = IntPtr.Zero;

        /// <summary>
        /// Creates an HNPSManager object.
        /// </summary>
        public HNPSManager()
        {
            InitializeComponent();
            
            hMgr = MgrCreate();
            if (hMgr != IntPtr.Zero)
            {
                pfOnConfigChange = new CallBackOnConfigChange(this.DoOnConfigChange);
                MgrSetOnConfigChange(hMgr, pfOnConfigChange, IntPtr.Zero);
            }
        }

        /// <summary>
        /// Destroys an HNPSManager object.
        /// </summary>
        ~HNPSManager()
        {
            if (hMgr != IntPtr.Zero) MgrDestroy(hMgr);
        }

        #region HNPSManager properties

        /// <summary>
        /// Checks if the HNPSManager object has been created correctly.
        /// </summary>
        [Browsable(false)]
        public bool IsValid
        {
            get
            {
                return (hMgr != IntPtr.Zero);
            }
        }

        /// <summary>
        /// Displays information about Packet Sniffer SDK.
        /// </summary>
        public void About()
        {
            MgrAbout(hMgr);
        }

        /// <summary>
        /// Returns the version number of the Packet Sniffer SDK library.
        /// </summary>
        public string Version
        {
            get
            {
                return Marshal.PtrToStringUni(MgrGetVersion(hMgr));
            }
        }

        /// <summary>
        /// Returns the build number of the Packet Sniffer SDK library.
        /// </summary>
        public string Build
        {
            get
            {
                return Marshal.PtrToStringUni(MgrGetBuild(hMgr));
            }
        }

        /// <summary>
        /// Returns the number of the HNAdapterConfig objects.
        /// </summary>
        [Browsable(false)]
        public int AdaptersCfgCount
        {
            get
            {
                return MgrGetAdaptersCfgCount(hMgr);
            }
        }

        /// <summary>
        /// Sets/Returns the WANMonitor installation status.
        /// </summary>
        public bool WanMonitorState
        {
            get
            {
                return MgrGetWanMonitorState(hMgr);
            }
            set
            {
                MgrSetWanMonitorState(hMgr, value);
            }
        }

        /// <summary>
        /// Return PSSDK initialization status.
        /// </summary>
        public bool IsInitialized
        {
            get { return MgrIsInitialized(hMgr); }
        }

        /// <summary>
        /// Return PSSDK protocol driver installation status for current version.
       /// </summary>
        public bool IsProtocolInstalled
        {
            get { return MgrIsProtocolInstalled(hMgr); }
        }

        /// <summary>
        /// Return PSSDK loopback driver installation status for current version.
        /// </summary>
        public bool IsLoopBackInstalled
        {
            get { return MgrIsLoopBackInstalled(hMgr); }
        }

        #endregion
        
        #region HNPSManager methods

        /// <summary>
        /// Initializes Packet Sniffer SDK.
        /// </summary>
        /// <returns></returns>
        public PSSDKRES Initialize()
        {
            return (PSSDKRES)MgrInitialize(hMgr);
        }

        /// <summary>
        /// Returns the handle of the first HNAdapterConfig object.
        /// </summary>
        /// <returns></returns>
        public IntPtr Get_FirstAdapter()
        {
            return MgrGetFirstAdapterCfg(hMgr);
        }

        /// <summary>
        /// Returns the handle of the next HNAdapterConfig object.
        /// </summary>
        /// <param name="hPrevCfg"></param>
        /// <returns></returns>
        public IntPtr Get_NextAdapterCfg(IntPtr hPrevCfg)
        {
            return MgrGetNextAdapterCfg(hMgr, hPrevCfg);
        }

        /// <summary>
        /// Refreshes the internal list of the HNAdapterConfig objects.
        /// </summary>
        /// <returns></returns>
        public PSSDKRES RefreshAdapterList()
        {
            return (PSSDKRES)MgrRefreshAdapterList(hMgr);
        }

        /// <summary>
        /// Install PSSDK protocol driver for current version.
        /// </summary>
        /// <returns></returns>
        public PSSDKRES InstallProtocol(string UniqueInstallID)
        {
            return (PSSDKRES)MgrInstallProtocol(hMgr, UniqueInstallID);
        }

        /// <summary>
        /// Uninstall PSSDK protocol driver for current version.
        /// </summary>
        public PSSDKRES UninstallProtocol(string UniqueInstallID)
        { 
            return (PSSDKRES)MgrUninstallProtocol(hMgr,UniqueInstallID);
        }

        /// <summary>
        /// Install PSSDK loopback driver for current version.
        /// </summary>
        public PSSDKRES InstallLoopBack(string UniqueInstallID)
        { 
            return (PSSDKRES)MgrInstallLoopBack(hMgr,UniqueInstallID);
        }

        /// <summary>
        /// Uninstall PSSDK loopback driver for current version.
        /// </summary>
        public PSSDKRES UninstallLoopBack(string UniqueInstallID)
        {
            return (PSSDKRES)MgrUninstallLoopBack(hMgr, UniqueInstallID);
        }

        /// <summary>
        /// Unload protocol driver for current version of PSSDK (windows nt/2k/xp/2k3/vista).
        /// </summary>
        public PSSDKRES UnloadProtocolNtDriver()
        {
            return (PSSDKRES)MgrUnloadProtocolNtDriver();
        }

        #endregion        

        #region HNPSManager callbacks

        /// <summary>
        /// Fires when the network adapter configuration changes.
        /// </summary>
        /// <param name="Param"></param>
        /// <param name="hConfig"></param>
        /// <param name="ChangeType"></param>
        private void DoOnConfigChange(IntPtr Param, IntPtr hConfig, int ChangeType)
        {
            if (OnConfigChange != null)
                OnConfigChange(this, hConfig, (HNAdapterConfigChange)ChangeType);
        }

        #endregion
    }
}
See also:HNPSManager, All wrappers in one ZIP archive