text: /*++
  
  Copyright (c) Microsoft Corporation
  
  ModuleName:
  
      MxDrierObjet.h
  
  Abstract:
  
      Mode agnostic definition of Driver Object
  
      See MxDriverObjectKm.h and MxDriverObjectUm.h/cpp for mode
      specific implementations
  
  --*/
  
  #pragma once
  
  //
  // Forward declare enum 
  //
  enum FxDriverObjectUmFlags : USHORT;
  
  class MxDriverObject
  {
  private:
      //
      // MdDeviceObject is typedef'ed to appropriate type for the mode
      // in the mode specific file
      //
      MdDriverObject m_DriverObject;
  
  public:
      __inline
      MxDriverObject(
          __in MdDriverObject DriverObject
          ) :
          m_DriverObject(DriverObject)
      {
      }
      
      __inline
      MxDriverObject(
          VOID
          ) :
          m_DriverObject(NULL)
      {
      }
  
      __inline
      MdDriverObject
      GetObject(
          VOID
          )
      {
          return m_DriverObject;
      }
  
      __inline
      VOID
      SetObject(
          __in_opt MdDriverObject DriverObject
          )
      {
          m_DriverObject = DriverObject;
      }
  
      PVOID
      GetDriverExtensionAddDevice(
          VOID
          );
  
      VOID
      SetDriverExtensionAddDevice(
          _In_ MdDriverAddDevice Value
          );
  
      MdDriverUnload
      GetDriverUnload(
          VOID
          );
  
      VOID
      SetDriverUnload(
          _In_ MdDriverUnload Value
          );
  
      VOID
      SetMajorFunction(
          _In_ UCHAR i,
          _In_ MdDriverDispatch Value
          );
  
      VOID
      SetDriverObjectFlag(
          _In_ FxDriverObjectUmFlags Flag
          );
  
      BOOLEAN
      IsDriverObjectFlagSet(
          _In_ FxDriverObjectUmFlags Flag
          );
      
          
  };
  
  