+#else /* __MINGW32__ */
+ typedef RPC_STATUS (RPC_ENTRY * UuidCreateFn) (UUID *);
+ UUID uuid;
+ UuidCreateFn uuid_create = 0;
+ HMODULE rpc_library = LoadLibrary ("rpcrt4.dll");
+
+ if (!rpc_library)
+ return FALSE;
+ uuid_create = (UuidCreateFn) (void (WINAPI *)(void)) GetProcAddress (rpc_library, "UuidCreate");
+ if (!uuid_create)
+ {
+ FreeLibrary (rpc_library);
+ return FALSE;
+ }
+
+ if (uuid_create (&uuid) != RPC_S_OK)
+ {
+ FreeLibrary (rpc_library);
+ return FALSE;
+ }
+ FreeLibrary (rpc_library);
+ memcpy (id_bits, &uuid,
+ (size_t) size < sizeof (UUID) ? (size_t) size : sizeof (UUID));
+#endif /* __MINGW32__ */