Hello Wine developers,
while trying to add proxy/stub code for shell32, I stumbled across the definition of remotable handles in IDL.
We have
- a RemotableHandle union. - the IDL typedefs for the wire representation of handles: | typedef [unique] RemotableHandle *wireHXXX; - the IDL declaration for the handle types itself: | typedef [wire_marshal(wireHXXX)] void*HXXX;
This makes widl generate null pointer checks for HWND parameters, as HXXX is a void pointer without the unique attribute. My question is: Should widl really add this check? As the type is marshalled as wireHXXX, the null value is no problem for marshalling, so it could be safely left out.
What I did in my repository was adding the [unique] attribute to the IDL typedef of the handle type: | typedef [unique, wire_marshal(wireHXXX)] void*HXXX; Is this the right approach to generally get rid of the NULL pointer checks for handles, or is widl to be fixed instead?
Best regards and thanks for advice, Michael Karcher