/* ------------------------------------------- Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved. ------------------------------------------- */ #pragma once #include #include namespace NeOS { class NVMEDeviceInterface final NE_DEVICE { public: explicit NVMEDeviceInterface(Void (*out)(IDeviceObject*, MountpointInterface* out_packet), Void (*in)(IDeviceObject*, MountpointInterface* in_packet), Void (*cleanup)(Void)); ~NVMEDeviceInterface() override; public: NE_COPY_DEFAULT(NVMEDeviceInterface); const Char* Name() const override; public: OwnPtr operator()(UInt32 dma_low, UInt32 dma_high, SizeT dma_sz); private: Void (*fCleanup)(Void) = {nullptr}; }; } // namespace NeOS