Tag: uuid

如何在C中生成GUID?

我想生成guid以插入到SQLite数据库中(即不支持db本身)。 但是,我想控制某些属性: 用于生成增加的guid值的顺序。 电脑独立。 数据库是公共的,可能/可能不希望guids允许某人将数据跟踪回特定的机器。 ‘足够’随机性。 guid是db中的键,它将与许多其他dbs合并,并且可以变得非常大,这意味着伪造像许多算法那样的guid并不好。 我可以处理使用系统特定的API,但请链接Windows和Linuxfunction,像SQLite这样的东西是首选,我可以使用别人写的代码。 我也更喜欢可以在商业应用中使用的代码。

从Win32从C或Delphi获取BIOS UUID

VMWare配置文件包含类似的行 uuid.bios = “56 4d ed cf 3c cd 63 20-53 78 95 86 26 92 22 c8” 而afaik大多数(每个?)物理BIOS都有这样的UUID。 是否有任何Windows API调用来获取此标识符? 我已经尝试了WMI类Win32_ComputerSystemProduct.UUID属性,但该值与uuid.bios值不同。 HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Cryptography \ MachineGuid的值也不同。

如何将64位哈希值缩短到48位值?

我已经在库中有64位散列函数(C编码),但我只需要48位。 我需要将64位散列值减少到48位值,但它必须以安全的方式才能最小化冲突。 散列函数是一个非常好的64位散列函数。 它已经通过SMHasher(“DieHarder”哈希测试)进行了测试,并且certificate比Murmur2更好。 据我的同事们说,在lib中实现64位散列的算法是xxHash,用SMHasher测试并得到Q.Score为10! 对于那些想要查看它的人,xxHash的源代码可以在github.com上找到: github.com/Cyan4973/xxHash/releases/latest 。 基本思想是使64位散列值(或其中一部分)中的所有位对产生的48位散列值产生影响。 有没有办法做到这一点? [编辑后期]: 所以我实现了自己的48位(准)-UUID生成器。 请在此处查看完整的工作解决方案(包括源代码): https : //stackoverflow.com/a/47895889/4731718 。

C语言中__uuidof的替代

我正在使用一个使用DirectX的C项目,我遇到了一个问题。 某些DX调用需要IID对象,通常使用__uuidof生成。 这需要做的一件事是创建一个RenderTargetView。 DirectX示例/教程执行此操作: ID3D11Texture2D* pBackBuffer = NULL; hr = g_pSwapChain->GetBuffer( 0, __uuidof( ID3D11Texture2D ), ( LPVOID* )&pBackBuffer ); 当我尝试在我的C代码中调用__uuidof时,出现编译错误: Error 19 error C4233: nonstandard extension used : ‘__uuidof’ keyword only supported in C++, not C DirectX有一个C接口,所以我想必须有办法做到这一点,但我不知道它会是什么。 谁知道?