From 9136c74309c3cee7f99f8f09fdcf8645c2a0583e Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Mon, 4 Aug 2025 11:18:34 +0200 Subject: [PATCH] Win: Add nspace, boundary_descriptor Signed-off-by: Simon Rozman --- include/WinStd/Win.h | 66 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/include/WinStd/Win.h b/include/WinStd/Win.h index c93663b7..55fff26a 100644 --- a/include/WinStd/Win.h +++ b/include/WinStd/Win.h @@ -1985,6 +1985,72 @@ namespace winstd } }; + /// + /// Namespace handle wrapper + /// + /// \sa [CreatePrivateNamespace function](https://learn.microsoft.com/en-us/windows/win32/api/namespaceapi/nf-namespaceapi-createprivatenamespacew) + /// + class nspace : public handle + { + WINSTD_HANDLE_IMPL(nspace, HANDLE, NULL) + + public: + /// + /// Closes an open namespace handle. + /// + /// \sa [ClosePrivateNamespace function](https://learn.microsoft.com/en-us/windows/win32/api/namespaceapi/nf-namespaceapi-closeprivatenamespace) + /// + virtual ~nspace() + { + if (m_h != invalid) + free_internal(); + } + + protected: + /// + /// Closes an open namespace handle. + /// + /// \sa [ClosePrivateNamespace function](https://learn.microsoft.com/en-us/windows/win32/api/namespaceapi/nf-namespaceapi-closeprivatenamespace) + /// + void free_internal() noexcept override + { + ClosePrivateNamespace(m_h, 0); + } + }; + + /// + /// Boundary descriptor handle wrapper + /// + /// \sa [CreateBoundaryDescriptor function](https://learn.microsoft.com/en-us/windows/win32/api/namespaceapi/nf-namespaceapi-createboundarydescriptorw) + /// + class boundary_descriptor : public handle + { + WINSTD_HANDLE_IMPL(boundary_descriptor, HANDLE, NULL) + + public: + /// + /// Deletes the specified boundary descriptor. + /// + /// \sa [DeleteBoundaryDescriptor function](https://learn.microsoft.com/en-us/windows/win32/api/namespaceapi/nf-namespaceapi-deleteboundarydescriptor) + /// + virtual ~boundary_descriptor() + { + if (m_h != invalid) + free_internal(); + } + + protected: + /// + /// Deletes the specified boundary descriptor. + /// + /// \sa [DeleteBoundaryDescriptor function](https://learn.microsoft.com/en-us/windows/win32/api/namespaceapi/nf-namespaceapi-deleteboundarydescriptor) + /// + void free_internal() noexcept override + { + DeleteBoundaryDescriptor(m_h); + } + }; + /// @} /// \addtogroup WinStdExceptions