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為預設值。 應用程式只能指定其中一個尋找旗標。

意義
FIND_FROMSTART
搜尋字串,從字串的第一個字元開始。
FIND_FROMEND
以反向方向搜尋字串,從字串的最後一個字元開始。
FIND_STARTSWITH
測試以找出 lpStringValue 所指定的值是否為 lpStringSource 所指示之來源字串中的第一個值。
FIND_ENDSWITH
測試以找出 lpStringValue 所指定的值是否為 lpStringSource 所指出來源字串中的最後一個值。

[in] lpStringSource

來源字串的指標,函式會在其中搜尋 lpStringValue 所指定的字串。

[in] cchSource

大小,以字元為單位,不包括 lpStringSource 所指示之字串的終止 Null 字元。 應用程式通常必須指定正數或 0。 如果來源字串為 Null 終止,而且函式應該自動計算大小,則應用程式可以指定 -1。

[in] lpStringValue

函式在來源字串中搜尋的搜尋字串指標。

[in] cchValue

大小,以字元為單位,不包括終止 Null 字元的 lpStringValue 所指示的字串。 應用程式通常必須指定正數或 0。 如果字串為 Null 終止,且函式應該自動計算大小,應用程式可以指定 -1。

[in] bIgnoreCase

如果函式執行不區分大小寫的比較,則為TRUE,否則為 FALSE。 比較不是語言作業,而且不適用於所有地區設定和語言。 其行為類似於英文的行為。

傳回值

如果成功,會將以 0 為基礎的索引傳回 至 lpStringSource 所指示的來源字串。 如果函式成功,找到的字串大小與 lpStringValue 的值相同。 傳回值 0 表示函式在來源字串的開頭找到相符專案。

如果函式不成功,或找不到搜尋字串,則傳回 -1。 若要取得延伸的錯誤資訊,應用程式可以呼叫 GetLastError,這可以傳回下列其中一個錯誤碼:

  • ERROR_INVALID_FLAGS。 為旗標的值無效。
  • ERROR_INVALID_PARAMETER。 任何參數值都無效。
  • ERROR_SUCCESS。 動作已順利完成,但不會產生任何結果。

備註

由於 FindStringOrdinal 提供二進位比較,因此不會傳回語言適當的結果。 序數比較可能會誤用英文排序行為。 不過,當字元因語言不重要數量而有所不同時,它找不到相符專案。 如需選擇適當排序函式的相關信息,請參閱 排序

相較於傳回 0 的 NLS 函式失敗,如果失敗,此函式會傳回 -1。 成功時,它會傳回以0為基礎的索引。 使用此索引可協助函式避免跨一個錯誤和一個字元緩衝區溢出。

此函式是數個 NLS 函式之一,即使在成功時仍會呼叫 SetLastError 。 它會在線程無法比對搜尋字串時,進行此呼叫以清除線程中的最後一個錯誤。 這會清除 GetLastError 傳回的值。

從 Windows 8 開始:FindStringOrdinal 會在 Libloaderapi.h 中宣告。 在 Windows 8 之前,它會在 Winnls.h 中宣告。

規格需求

需求
最低支援的用戶端 Windows 7 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 R2 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 libloaderapi.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

FindNLSString

FindNLSStringEx

處理應用程式中的排序

國家語言支援

國家語言支援函式