Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1999.
//
// File: S T A B L E . H
//
// Contents: Defines the datatypes to represent stack entries and stack
// tables.
//
// Notes:
//
// Author: shaunco 15 Jan 1999
//
//----------------------------------------------------------------------------
#pragma once
#include "bindings.h"
#include "comp.h"
class CStackEntry { public: const CComponent* pUpper; const CComponent* pLower;
public: BOOL operator== ( const CStackEntry& Other) const { return (pUpper == Other.pUpper) && (pLower == Other.pLower); } };
class CModifyContext;
enum MOVE_FLAG { MOVE_BEFORE = 1, MOVE_AFTER = 2, };
class CStackTable : public vector<CStackEntry> { public: // This flag indicates how WAN adapters are inserted into the stack
// table. If TRUE, they are inserted before any LAN adapters. If
// FALSE, they are inserted after any LAN adapters.
//
BOOL m_fWanAdaptersFirst;
public: VOID Clear () { clear (); }
UINT CountEntries () { return size(); }
BOOL FIsEmpty () const { return empty(); }
BOOL FStackEntryInTable ( IN const CComponent* pUpper, IN const CComponent* pLower) const;
HRESULT HrCopyStackTable ( IN const CStackTable* pSourceTable);
HRESULT HrInsertStackEntriesForComponent ( IN const CComponent* pComponent, IN const CComponentList* pComponents, IN DWORD dwFlags /* INS_FLAGS */);
HRESULT HrUpdateEntriesForComponent ( IN const CComponent* pComponent, IN const CComponentList* pComponents, IN DWORD dwFlags /* INS_FLAGS */);
HRESULT HrInsertStackEntry ( IN const CStackEntry* pStackEntry, IN DWORD dwFlags /* INS_FLAGS */);
HRESULT HrMoveStackEntries ( IN const CStackEntry* pSrc, IN const CStackEntry* pDst, IN MOVE_FLAG Flag, IN CModifyContext* pModifyCtx);
HRESULT HrReserveRoomForEntries ( IN UINT cEntries);
VOID RemoveEntriesWithComponent ( IN const CComponent* pComponent);
VOID SetWanAdapterOrder ( IN BOOL fWanAdaptersFirst);
VOID RemoveStackEntry( IN const CComponent* pUpper, IN const CComponent* pLower); };
class CNetConfigCore;
// Context structure for recursive function GetBindingsBelowComponent.
//
struct GBCONTEXT { // The core to reference for generating the binding set.
//
IN const CNetConfigCore* pCore;
// The binding set to generate based on pSourceComponent.
//
IN OUT CBindingSet* pBindSet;
// The component to start with when generating the binding set.
//
IN const CComponent* pSourceComponent;
// If TRUE, do not add those bindpaths to pBindSet that exist in
// pCore->DisabledBindings. This feature is used when we generate the
// bindings that get written to the registry.
//
IN BOOL fPruneDisabledBindings;
// Special case: NCF_DONTEXPOSELOWER
//
IN DWORD dwAddBindPathFlags;
// The result of the operation.
//
OUT HRESULT hr;
// This is the bindpath that is built up via recursion. It is
// added to the binding set when recursion finishes.
//
OUT CBindPath BindPath; };
// Context structure for recursive functions:
// GetComponentsAboveComponent
//
struct GCCONTEXT { // The stack table to reference for generating the component list.
//
IN const CStackTable* pStackTable;
// The component list to generate.
//
IN OUT CComponentList* pComponents;
// If TRUE, don't stop recursing at NCF_DONTEXPOSELOWER components.
//
IN BOOL fIgnoreDontExposeLower;
// The result of the operation.
//
OUT HRESULT hr; };
VOID GetComponentsAboveComponent ( IN const CComponent* pComponent, IN OUT GCCONTEXT* pCtx);
VOID GetBindingsBelowComponent ( IN const CComponent* pComponent, IN OUT GBCONTEXT* pCtx);
|