> + hr = map_file(file, &map, &mem, &size); > + if (FAILED(hr)) return hr; > + ... > + > + hr = IWICStreamImpl_InitializeFromMemory(stream, mem, size.u.LowPart); > + if (FAILED(hr)) goto error; This makes me sad. Is this really simpler than implementing Write and Seek for a file handle?