FindStringOrdinal 函数 (libloaderapi.h)
在另一个 Unicode 字符串中查找 (宽字符) Unicode 字符串,以便进行非语言比较。
语法
int FindStringOrdinal(
[in] DWORD dwFindStringOrdinalFlags,
[in] LPCWSTR lpStringSource,
[in] int cchSource,
[in] LPCWSTR lpStringValue,
[in] int cchValue,
[in] BOOL bIgnoreCase
);
参数
[in] dwFindStringOrdinalFlags
指定查找操作详细信息的标志。 这些标志互斥,FIND_FROMSTART为默认值。 应用程序只能指定其中一个查找标志。
[in] lpStringSource
指向源字符串的指针,函数在其中搜索 lpStringValue 指定的字符串。
[in] cchSource
lpStringSource 指示的字符串的大小(以字符为单位,不包括终止 null 字符)。 应用程序通常必须指定正数或 0。 如果源字符串以 null 结尾,并且函数应自动计算大小,则应用程序可以指定 -1。
[in] lpStringValue
指向函数在源字符串中搜索的搜索字符串的指针。
[in] cchValue
lpStringValue 指示的字符串的大小(以字符为单位,不包括终止 null 字符)。 应用程序通常必须指定正数或 0。 如果字符串以 null 结尾,并且函数应自动计算大小,则应用程序可以指定 -1。
[in] bIgnoreCase
如果函数要执行不区分大小写的比较,则为 TRUE;否则为 FALSE。 比较不是语言运算,并不适合所有区域设置和语言。 它的行为类似于英语。
返回值
如果成功,则返回 lpStringSource 指示的源字符串中的从 0 开始的索引。 如果函数成功,则找到的字符串的大小与 lpStringValue 的值相同。 返回值为 0 表示函数在源字符串的开头找到匹配项。
如果函数不成功或找不到搜索字符串,则函数将返回 -1。 若要获取扩展错误信息,应用程序可以调用 GetLastError,这会返回以下错误代码之一:
- ERROR_INVALID_FLAGS。 为标志提供的值无效。
- ERROR_INVALID_PARAMETER。 任何参数值都无效。
- ERROR_SUCCESS。 操作已成功完成,但未产生任何结果。
注解
由于 FindStringOrdinal 提供二进制比较,因此它不会返回语言上适当的结果。 序号比较可能被误认为是英语排序行为。 但是,当字符因语言上微不足道的量而变化时,它找不到匹配项。 有关选择适当的 排序 函数的信息,请参阅排序。
与失败返回 0 的 NLS 函数不同,如果失败,此函数返回 -1。 成功后,它将返回从 0 开始的索引。 使用此索引有助于函数避免逐个错误和单字符缓冲区溢出。
此函数是为数不多的调用 SetLastError 的 NLS 函数之一,即使它成功也是如此。 它进行此调用,以在线程无法匹配搜索字符串时清除该线程中的最后一个错误。 这会清除 GetLastError 返回的值。
从 Windows 8 开始:FindStringOrdinal 在 Libloaderapi.h 中声明。 在Windows 8之前,它在 Winnls.h 中声明。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 7 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2008 R2 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | libloaderapi.h (包括 Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |