/*++ Copyright (c) Microsoft Corporation Module Name: FxDeviceInterface.hpp Abstract: This module implements the device interface object. Author: Environment: Both kernel and user mode Revision History: --*/ #ifndef _FXDEVICEINTERFACE_H_ #define _FXDEVICEINTERFACE_H_ class FxDeviceInterface : public FxStump { public: GUID m_InterfaceClassGUID; UNICODE_STRING m_ReferenceString; UNICODE_STRING m_SymbolicLinkName; SINGLE_LIST_ENTRY m_Entry; BOOLEAN m_State; #if (FX_CORE_MODE == FX_CORE_USER_MODE) // // This is needed in UM to get hold of host interface // MdDeviceObject m_Device; #endif public: FxDeviceInterface( VOID ); ~FxDeviceInterface( VOID ); static FxDeviceInterface* _FromEntry( __in PSINGLE_LIST_ENTRY Entry ) { return CONTAINING_RECORD(Entry, FxDeviceInterface, m_Entry); } _Must_inspect_result_ NTSTATUS Initialize( __in PFX_DRIVER_GLOBALS FxDriverGlobals, __in CONST GUID* InterfaceGUID, __in_opt PCUNICODE_STRING ReferenceString ); VOID SetState( __in BOOLEAN State ); _Must_inspect_result_ NTSTATUS Register( __in MdDeviceObject Pdo ); _Must_inspect_result_ NTSTATUS Register( _In_ FxDevice* Device ); NTSTATUS GetSymbolicLinkName( _In_ FxString* LinkString ); }; #endif // _FXDEVICEINTERFACE_H_