Appearance
Windows 内核中的 LUID 是什么?它为什么如此古怪?
原文:In the Windows kernel, what is a LUID, and what makes it loo-ey?
日期:2024年8月30日
在 Windows 内核中,你会看到一个称为 LUID 的东西,通常发音为 /loo-id/。内核文档说
LUID 结构是一种不透明结构,它指定一个保证在本地计算机上唯一的标识符。有关详细信息,请参阅 Microsoft Windows SDK 文档中 LUID 的参考页。
如果你前往 Windows SDK 文档,你会得到
描述适配器的本地标识符。
备注
该结构体被 ID3D12Device::GetAdapterLuid 和 GetSharedResourceAdapterLuid 方法使用。
不知何故,显示驱动程序人员接管了LUID
文档,并使其成为与显示驱动程序相关的内容。就好像文件系统团队已经接管了LARGE_INTEGER
文档,并使其说“LARGE_INTEGER
结构体以字节为单位保存文件大小”,因为GetFileSizeEx
函数使用LARGE_INTEGER
结构来实现此目的。
实际上,LUID
是一种保存 64 位整数(分为两个 32 位的部分)的结构。这个 64 位整数是“本地唯一的”,从某种意义上说,在系统重新启动之前,它不会与从同一系统生成的任何其他LUID
匹配。
你可以通过调用AllocateLocallyUniqueId
来请求为你生成LUID
。
由于LUID
仅对系统是唯一的,因此你不应该将它们发送到其他系统(因为它们在那里不是唯一的)。由于LUID
在系统重启时会丢失唯一性,因此你不应该将它们保存在任何持久位置,因为它们在重启后没有意义。LUID
的用途是让系统识别其生存期不会超过重新启动的事物。