0

CoCreateGuid() を呼び出して GUID を生成する単純なクラスがあります。次に、結果を UuidToString() に渡します。

ほとんどの場合、次の形式の文字列を取得します。

e0e3e4b5-6f13-4043-b6c6-488c8b85cbd1

ただし、いくつかのマシンでは、結果は次のようになります。

0-40:61:86:C2:4E:4F

この予期しない動作を説明できる人はいますか? 2 番目のフォームも GUID ですか?

更新: エラーの原因を突き止めたところ、UuidToString() が私が思っていた文字列を返していないことがわかりました。

すべての答えをありがとう。

4

3 に答える 3

1

奇妙な。RPCは奇妙なAPIですが、非常に古く、癖はかなり保存されています。代わりにStringFromGUID2()を使用することをお勧めします。同じことを達成するための2つの方法があることは、常に明白な兆候ですが、後で行う方がよいでしょう。

于 2011-01-21T19:40:15.353 に答える
1

GUID は文字列ではなく 128 ビットの数値であるため、厳密にはどちらも GUID ではありません。2 番目の形式は見たことがありませんが、それが有効であると定義される実装は想像できます。通常、UuidCreate、UuidFromString などは rpcrt4.dll に実装されていますが、別の実装を使用できると思います。文字列を UuidFromString に渡し、その関数の戻り値を確認します。最初にこの疑わしい GUID を提供した UuidCreate および UuidToString と同じ DLL に実装されていることを確認してください。

于 2011-01-21T18:26:30.267 に答える
1

警告: これは推測にすぎません!

そこにあるものは、MACアドレスに非常によく似ています。

CoCreateGuid基本的に使用しUuidCreateます。これは、コンピューターのネットワーク アダプターを使用して、ローカルで一意の UUID を作成できます。私の推測では、これらのマシンでは、ネットワーク構成の何かが「バグ」などを引き起こし、中間文字列が返されると思います。

UuidCreate直接使用してRPC_S_UUID_NO_ADDRESSフラグを使用してみることができます

http://msdn.microsoft.com/en-us/library/aa379205(v=vs.85).aspx

于 2011-01-21T18:06:29.327 に答える