私は、次のシーケンシャルGUIDを作成するhttp://www.dbdelta.com/improving-uniqueidentifier-performance/からcodesnippedコピー:私を混乱させる何Sequential Guidsの作成時にRPC_S_UUID_LOCAL_ONLYはどれくらい重要ですか?
private static Guid NewSequentialGuid()
{
const int S_OK = 0;
const int RPC_S_UUID_LOCAL_ONLY = 1824;
Guid oldGuid = Guid.Empty;
int result = UuidCreateSequential(ref oldGuid);
if (result != S_OK && result != RPC_S_UUID_LOCAL_ONLY)
{
throw new ExternalException("UuidCreateSequential call failed", result);
}
byte[] oldGuidBytes = oldGuid.ToByteArray();
byte[] newGuidBytes = new byte[16];
oldGuidBytes.CopyTo(newGuidBytes, 0);
// swap low timestamp bytes (0-3)
newGuidBytes[0] = oldGuidBytes[3];
newGuidBytes[1] = oldGuidBytes[2];
newGuidBytes[2] = oldGuidBytes[1];
newGuidBytes[3] = oldGuidBytes[0];
// swap middle timestamp bytes (4-5)
newGuidBytes[4] = oldGuidBytes[5];
newGuidBytes[5] = oldGuidBytes[4];
// swap high timestamp bytes (6-7)
newGuidBytes[6] = oldGuidBytes[7];
newGuidBytes[7] = oldGuidBytes[6];
//remaining 8 bytes are unchanged (8-15)
return new Guid(newGuidBytes);
}
は、&& result != RPC_S_UUID_LOCAL_ONLY
チェックです。私はなぜ/いつ私がこの値をチェックするべきでないかを理解していない。
誰か明確にしていただけますか?私はこのチェックを外すことができますか?それとも私は問題に遭遇しますか?
この方法について[documentation](https://msdn.microsoft.com/en-us/library/windows/desktop/aa379322(v = vs.85).aspx)を読んだことがありますか?備考セクションは、その成功コードで生成された値に頼りにしたくない理由を説明する、まともな仕事(IMO)を行います。 –
はい、私はそれを読んでいますが、この行は私を混乱させます。「イーサネット/トークンリングアドレスを持つコンピュータは、グローバルに一意であることが保証されているUUIDを生成します」 - あなたはこのチェックをすべて使用したいと思うが、編集:nvm、今私はそれを理解した。 D'OH – FullStackDAU