3331475701a5b12f98b3cfea07d5dca60072530fvboxsync/* $Id$ */
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync/** @file
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync * VBoxNetFltNobj.h - Notify Object for Bridged Networking Driver.
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync * Used to filter Bridged Networking Driver bindings
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync */
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync/*
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync * Copyright (C) 2011 Oracle Corporation
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync *
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync * available from http://www.virtualbox.org. This file is free software;
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync * you can redistribute it and/or modify it under the terms of the GNU
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync * General Public License (GPL) as published by the Free Software
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync */
677d56e09bab8713dc546b66c93f8bb92a7881c3vboxsync#ifndef ___VBoxNetFltNobj_h___
677d56e09bab8713dc546b66c93f8bb92a7881c3vboxsync#define ___VBoxNetFltNobj_h___
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync#include <windows.h>
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync/* atl stuff */
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync#include <atlbase.h>
3331475701a5b12f98b3cfea07d5dca60072530fvboxsyncextern CComModule _Module;
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync#include <atlcom.h>
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync#include "VBoxNetFltNobjT.h"
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync#include "VBoxNetFltNobjRc.h"
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync#define VBOXNETFLTNOTIFY_ONFAIL_BINDDEFAULT false
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync/*
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync * VirtualBox Bridging driver notify object.
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync * Needed to make our driver bind to "real" host adapters only
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync */
3331475701a5b12f98b3cfea07d5dca60072530fvboxsyncclass ATL_NO_VTABLE VBoxNetFltNobj :
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync public CComObjectRootEx<CComObjectThreadModel>,
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync public CComCoClass<VBoxNetFltNobj, &CLSID_VBoxNetFltNobj>,
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync public INetCfgComponentControl,
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync public INetCfgComponentNotifyBinding
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync{
3331475701a5b12f98b3cfea07d5dca60072530fvboxsyncpublic:
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync VBoxNetFltNobj();
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync ~VBoxNetFltNobj();
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync BEGIN_COM_MAP(VBoxNetFltNobj)
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync COM_INTERFACE_ENTRY(INetCfgComponentControl)
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync COM_INTERFACE_ENTRY(INetCfgComponentNotifyBinding)
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync END_COM_MAP()
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync DECLARE_REGISTRY_RESOURCEID(IDR_VBOXNETFLT_NOBJ)
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync /* INetCfgComponentControl methods */
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync STDMETHOD(Initialize)(IN INetCfgComponent *pNetCfgComponent, IN INetCfg *pNetCfg, IN BOOL bInstalling);
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync STDMETHOD(ApplyRegistryChanges)();
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync STDMETHOD(ApplyPnpChanges)(IN INetCfgPnpReconfigCallback *pCallback);
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync STDMETHOD(CancelChanges)();
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync /* INetCfgComponentNotifyBinding methods */
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync STDMETHOD(NotifyBindingPath)(IN DWORD dwChangeFlag, IN INetCfgBindingPath *pNetCfgBP);
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync STDMETHOD(QueryBindingPath)(IN DWORD dwChangeFlag, IN INetCfgBindingPath *pNetCfgBP);
3331475701a5b12f98b3cfea07d5dca60072530fvboxsyncprivate:
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync void init(IN INetCfgComponent *pNetCfgComponent, IN INetCfg *pNetCfg, IN BOOL bInstalling);
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync void cleanup();
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync /* these two used to maintain the component info passed to
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync * INetCfgComponentControl::Initialize */
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync INetCfg *mpNetCfg;
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync INetCfgComponent *mpNetCfgComponent;
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync BOOL mbInstalling;
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync};
3331475701a5b12f98b3cfea07d5dca60072530fvboxsync
677d56e09bab8713dc546b66c93f8bb92a7881c3vboxsync#endif /* #ifndef ___VBoxNetFltNobj_h___ */