I'd suggest to use public APIs instead of inventing "extenstions". CreateBitmapFromMemory should work for this purpose if you really need to do it using windowscodecs, otherwise GDI APIs may work as well.
I've been of the opinion that we should have a separate dll for Wine extensions to WIC, which could also work on WIndows, but I was told to put them in the same dll. We have two extensions already: the ICNS encoder and the TGA decoder.
Yes, there are other ways we could do this. Probably GDI is the next simplest way. However, this is a case where we can very easily reuse code that was already written to support the BMP and ICO decoders as well as the code in d3dx9 that uses WIC decoders, so to me it still seems like the best option.
(I was setting up for this when I was working on the ICO decoder, but that was only a matter of keeping separate the two changes I had to make in the logic for reading ICO frames, and writing DibDecoder_CreateInstance so anyone who went to implement a new one would see it.)
The GUIDs for the other extensions are defined in private headers rather than wincodecs.idl, so I guess we should do that here.