[Python-Dev] UUID module
Thomas Heller
theller at python.net
Sat Jun 10 17:35:17 CEST 2006
Ka-Ping Yee wrote:
> Hi Thomas,
>
>> This does not work, for several reasons.
>>
>> 1. (pythoncom|pywintypes).CreateGuid() return a PyIID instance, which you cannot slice:
>
> You're right. The PEAK code must have been based on an earlier
> version of the CreateGuid() routine.
>
> I've fixed this, and added detection of the UUID version so that
> the MAC address will only be picked up if the UUID version is 1.
>
>> (BTW: Why does it first try pywintypes, the pythoncom?)
>
> Because PEAK does this, and i see the CreateGuid routine imported
> from both modules in Google searches for code, i assumed that it
> used to live in one module and moved to the other.
>
> I've also figured out how to get the MAC address using NetBIOS
> calls, and added that to the repertoire of methods. I've tested
> this and it works fast. I think this may be better than
> UuidCreateSequential, because it should work on both Win98 and XP.
I have not tested the speed, but extending my snippet to also work
on 98 should be nearly trivial:
try:
_func = windll.rpcrt4.UuidCreateSequential
except AttributeError:
_func = windll.rpcrt4.UuidCreate
def CreateGuid():
uuid = UUID()
if 0 == _func(byref(uuid)):
return str(buffer(uuid))
Thomas
More information about the Python-Dev
mailing list