Well several of the APIs are able to export or import KMT handles, so I think it's appropriate to implement that too.
Then, I think it's even more important for the D3D side which only work on the PE side. For instance it seems to me that ID3D12Device::CreateSharedHandle can create NT handle out of a given resource, while giving it a specific name too. That's pretty much what D3DKMTShareObjects does, but it takes D3DKMT (local) handles as input.
So overall, I think we can use D3DKMT objects as a backend for everything.
D3D would ask its underlying VK API to export global D3DKMT handles, and open them as local objects so that it can later re-share them as (named) NT handles. When it's on top of GL, we will need some Wine-specific extension to export the handles because there's none defined.
For VK Win32 export extensions, we can implement any kind of export through the use of the corresponding D3DKMT functions from an existing D3DKMT object. We would create global D3DKMT objects at VK object creation, while exporting the equivalent unix primitive instead, then attach the unix primitive to the D3DKMT global object. Importing work similarly, getting the underlying unix primitive from a custom wineserver request, to import it into the Vulkan object instead.
For GL Win32 extensions, it only supports importing objects, but pretty much the same thing, we can get the D3DKMT object from the provided D3DKMT handle / NT handle / NT name, retrieve its underlying Unix primitive and import it into the GL object through the appropriate GL Unix import.
Same idea with CL I guess, and if it can export handles then do the same as Vulkan. It needs to be done on the unix side anyway.
Then, when we have an architecture to export, wrap and share our API-specific resources as D3DKMT objects, this also allows us to reuse it for the Unix only things, like driver compositing or cross-process rendering, and import these objects into a different process, or a different API (for instance, export a VK image, share it to another process, import it as a GL texture, composite it with other images from other processes, etc).