/* * Copyright (c) 2022-2025 Vadym Hrynchyshyn */ #pragma once #include "generic_handle.h" #include #include namespace usbip { struct HandleTag {}; using Handle = generic_handle; template<> inline void close_handle(Handle::type h, Handle::tag_type) noexcept { [[maybe_unused]] auto ok = CloseHandle(h); assert(ok); } struct NullableHandleTag {}; using NullableHandle = generic_handle; template<> inline void close_handle(NullableHandle::type h, NullableHandle::tag_type) noexcept { [[maybe_unused]] auto ok = CloseHandle(h); assert(ok); } struct HModuleTag {}; using HModule = generic_handle; template<> inline void close_handle(_In_ HModule::type h, _In_ HModule::tag_type) noexcept { [[maybe_unused]] auto ok = FreeLibrary(h); assert(ok); } } // namespace usbip