[ofw] interface GUIDs and versioning

Sean Hefty sean.hefty at intel.com
Tue Jun 9 12:40:25 PDT 2009


> #define INTERFACE IWVQueuePair
>-// {a847c13c-e617-489c-b0ab-2da73eb0adfd}
>-DEFINE_GUID(IID_IWVQueuePair, 0xa847c13c, 0xe617, 0x489c,
>-			0xb0, 0xab, 0x2d, 0xa7, 0x3e, 0xb0, 0xad, 0xfd);
>+// {35C64226-6A1F-4c8d-9465-C6FEE8053CDD}
>+DEFINE_GUID(IID_IWVQueuePair, 0x35c64226, 0x6a1f, 0x4c8d,
>+			0x94, 0x65, 0xc6, 0xfe, 0xe8, 0x5, 0x3c, 0xdd);
>
> DECLARE_INTERFACE_(IWVQueuePair, IWVOverlapped)
> {
>@@ -802,9 +802,9 @@ DECLARE_INTERFACE_(IWVQueuePair, IWVOver
>
> #undef INTERFACE
> #define INTERFACE IWVConnectQueuePair
>-// {A791309C-4244-4194-AD63-7D372CADE5E0}
>-DEFINE_GUID(IID_IWVConnectQueuePair, 0xa791309c, 0x4244, 0x4194,
>-			0xad, 0x63, 0x7d, 0x37, 0x2c, 0xad, 0xe5, 0xe0);
>+// {DF905570-AEEB-4114-B30E-4DC3EB5A9AD6}
>+DEFINE_GUID(IID_IWVConnectQueuePair, 0xdf905570, 0xaeeb, 0x4114,
>+			0xb3, 0xe, 0x4d, 0xc3, 0xeb, 0x5a, 0x9a, 0xd6);

It's not clear to me the best way to handle interface changes after release.  In
this case, the QP interfaces changed, so I updated their GUIDs.  But it seems
like the WvProvider interface GUID basically controls the default interfaces
that a user sees.  It's the only GUID that a user will typically access
directly.  As an example, a user calls:

WvGetObject(IID_WvProvider...);
provider->OpenDevice(... IWVDevice *dev);

The user doesn't specify which version of the IWVDevice interface that's wanted.

Should users always call QueryInterface to ensure that they have the correct
interface, or should the interface GUIDs be input into any calls that return an
interface?  Thoughts anyone?

- Sean




More information about the ofw mailing list