共用方式為


WinBioAsyncOpenSession 函式 (winbio.h)

非同步連接生物辨識服務提供者及一個或多個生物辨識單元。 從 Windows 10 版本 1607 開始,此功能可用於行動映像檔。 若成功,函式會回傳生物特徵會話句柄。 使用此句柄執行的所有操作都會非同步完成,包括 WinBioCloseSession,結果會依照 NotificationMethod 參數中指定的方法回傳給用戶端應用程式。

關於此函式的同步版本,請參見 WinBioOpenSession

語法

HRESULT WinBioAsyncOpenSession(
  [in]            WINBIO_BIOMETRIC_TYPE             Factor,
  [in]            WINBIO_POOL_TYPE                  PoolType,
  [in]            WINBIO_SESSION_FLAGS              Flags,
  [in, optional]  WINBIO_UNIT_ID                    *UnitArray,
  [in, optional]  SIZE_T                            UnitCount,
  [in, optional]  GUID                              *DatabaseId,
  [in]            WINBIO_ASYNC_NOTIFICATION_METHOD  NotificationMethod,
  [in, optional]  HWND                              TargetWindow,
  [in, optional]  UINT                              MessageCode,
  [in, optional]  PWINBIO_ASYNC_COMPLETION_CALLBACK CallbackRoutine,
  [in, optional]  PVOID                             UserData,
  [in]            BOOL                              AsynchronousOpen,
  [out, optional] WINBIO_SESSION_HANDLE             *SessionHandle
);

參數

[in] Factor

一個由 WINBIO_BIOMETRIC_TYPE 旗標組成的位元遮罩,指定要列舉的生物特徵單位類型。 目前只支援 WINBIO_TYPE_FINGERPRINT

[in] PoolType

一個 ULONG 值,指定該會話中將使用的生物特徵單位類型。 這可以是下列其中一個值:

價值觀 Meaning
WINBIO_POOL_SYSTEM
該會話連接至由服務提供者管理的共享生物特徵單元集合。
WINBIO_POOL_PRIVATE
該會話連接由呼叫者管理的一組生物特徵單元。

[in] Flags

ULONG 值,指定新會話的生物特徵單元配置與存取特性。 配置旗標指定會話中單元的一般配置。 存取標誌則指定應用程式如何使用生物特徵單元。 你必須指定一個設定標誌,但你可以將該標誌與任何存取標誌合併使用。

價值觀 Meaning
WINBIO_FLAG_DEFAULT
群組:配置

生物辨識單元的運作方式依安裝時指定方式運作。 當 PoolType 參數 WINBIO_POOL_SYSTEM時,必須使用這個值。

WINBIO_FLAG_BASIC
群組:配置

生物辨識單元僅作為基本的擷取裝置運作。 所有處理、匹配與儲存操作皆由軟體外掛程式執行。

WINBIO_FLAG_ADVANCED
群組:配置

生物辨識單元採用內部處理與儲存功能。

WINBIO_FLAG_RAW
群組:通行

用戶端應用程式使用 WinBioCaptureSample 擷取原始生物特徵資料。

WINBIO_FLAG_MAINTENANCE
群組:通行

用戶端透過呼叫 WinBioControlUnitPrivileged 來對生物辨識單元執行廠商定義的控制操作。

[in, optional] UnitArray

指標指向一組生物特徵單元識別碼陣列,將納入會話中。 你可以呼叫 WinBioEnumBiometricUnits 來列舉生物特徵單位。 如果 PoolType 參數為 WINBIO_POOL_SYSTEM,則將此值設為 NULL

[in, optional] UnitCount

一個指定 UnitArray 參數指向陣列中元素數量的值。 如果 PoolType 參數為 WINBIO_POOL_SYSTEM,則將此值設為零。

[in, optional] DatabaseId

一個指定會話要使用的資料庫的值。 如果 PoolType 參數是 WINBIO_POOL_PRIVATE,你必須指定已安裝資料庫的 GUID。 如果 PoolType 參數未 WINBIO_POOL_PRIVATE,你可以指定以下常見值之一。

價值觀 Meaning
WINBIO_DB_DEFAULT
感測器池中的每個生物特徵單元使用預設生物特徵單元設定中指定的資料庫。 如果 PoolType 參數為 WINBIO_POOL_SYSTEM,必須指定此值。 如果 PoolType 參數是 WINBIO_POOL_PRIVATE,你就不能使用這個值
WINBIO_DB_BOOTSTRAP
你可以指定這個值用於啟動 Windows 前的情境。 通常,資料庫是感測器晶片或 BIOS 的一部分,只能用於範本的註冊與刪除。
WINBIO_DB_ONCHIP
資料庫安裝在感測器晶片上,供登錄與配對。

[in] NotificationMethod

規定此生物辨識會話中非同步操作的完成通知如何傳遞給用戶端應用程式。 這必須是以下其中一個數值。

價值觀 Meaning
WINBIO_ASYNC_NOTIFY_CALLBACK
會話會呼叫應用程式定義的回調函式。
WINBIO_ASYNC_NOTIFY_MESSAGE
該會話將視窗訊息貼入應用程式的訊息佇列。

[in, optional] TargetWindow

會收到完工通知的窗口。 除非 NotificationMethod 參數設為 WINBIO_ASYNC_NOTIFY_MESSAGE,否則此值會被忽略。

[in, optional] MessageCode

框架必須發送的視窗訊息代碼以表示完成通知。 除非 NotificationMethod 參數設為 WINBIO_ASYNC_NOTIFY_MESSAGE,否則此值會被忽略。 該值必須在WM_APP(0x8000)至0xBFFF範圍內。

Windows 生物特徵框架將訊息的 LPARAM 值設定為包含操作結果的 WINBIO_ASYNC_RESULT 結構的位址。 使用完後,必須聯絡 WinBioFree 來釋放該結構。

[in, optional] CallbackRoutine

當使用會話句柄開始操作時,要呼叫回調例程的位址。 除非 NotificationMethod 參數設為 WINBIO_ASYNC_NOTIFY_CALLBACK,否則此值會被忽略。

[in, optional] UserData

呼叫者提供的緩衝區位址。 緩衝區不會被框架或生物辨識單元修改。 它會被歸還在 WINBIO_ASYNC_RESULT 結構中。 您的應用程式可利用這些資料來決定收到完工通知後應執行的行動,或維持關於所請求作業的額外資訊。

[in] AsynchronousOpen

指定是否要封鎖直到框架會話開啟。 指定 FALSE 會導致程序阻塞。 指定 TRUE 會使該會話以非同步方式開啟。

如果你指定 FALSE 以同步開啟框架會話,成功或失敗會直接由這個函式以 HRESULT 回傳值給呼叫者。 若會話成功開啟,應用程式收到的第一個非同步完成事件將是框架開啟後請求的非同步操作。

如果你指定 TRUE 以非同步開啟框架會話,第一個非同步完成通知將是開啟框架時收到的。 若 NotificationMethod 參數設為 WINBIO_ASYNC_NOTIFY_CALLBACK,操作結果會依照 CallbackRoutine 參數指定的回調函式中,傳送至 WINBIO_ASYNC_RESULT 結構。 若 NotificationMethod 參數設為 WINBIO_ASYNC_NOTIFY_MESSAGE,操作結果會傳送至 LPARAM 欄位指向的 WINBIO_ASYNC_RESULT 結構。

[out, optional] SessionHandle

若函式未成功,該參數將為 NULL。

若會話是同步且成功開啟,該參數將包含指向會話句柄的指標。

如果你指定非同步開啟會話,這個方法會立即回傳,會話的句柄會是 NULL,你必須檢查 WINBIO_ASYNC_RESULT 結構以判斷該會話是否成功開啟。

返回值

如果函式成功,則會傳回 S_OK。 如果函式失敗,它會傳回指出錯誤的 HRESULT 值。 可能的值包括但不限於下表中的值。 如需常見錯誤碼的清單,請參閱 常見的 HRESULT 值

回傳碼 Description
E_OUTOFMEMORY
目前可用的記憶體不足以建立生物辨識會話。
E_INVALIDARG
如果你將通知方法設為 WINBIO_ASYNC_NOTIFY_MESSAGE,TargetWindow 參數不能是 NULL 或 HWND_BROADCAST,MessageCode 參數也不能是零(0)。
E_POINTER
必須設定 SessionHandle 參數與 AsynchronousOpen 參數。

如果你將通知方法設為 WINBIO_ASYNC_NOTIFY_CALLBACK,也必須在 CallbackRoutine 參數中指定回調函式的位址。

E_ACCESSDENIED
Flags 參數包含 WINBIO_FLAG_RAWWINBIO_FLAG_MAINTENANCE 標誌,呼叫者尚未獲得任一存取權限。
WINBIO_E_INVALID_UNIT
UnitArray 參數中指定的一個或多個生物特徵單位號碼不適用。
WINBIO_E_NOT_ACTIVE_CONSOLE
用戶端應用程式正在遠端桌面用戶端執行,並嘗試開啟系統池會話。
WINBIO_E_SENSOR_UNAVAILABLE
PoolType 參數設為 WINBIO_POOL_PRIVATE,且該池中一個或多個請求的感測器無法使用。
WINBIO_E_DISABLED
現行管理政策禁止使用 Windows 生物特徵框架 API。

備註

WinBioAsyncOpenSession 函式回傳的會話句柄可用於產生以下任一函式的非同步完成通知:

WinBioAsyncOpenSession 回傳的會話帳號無法與以下函式一起使用: 這些函式首次在 Windows 7 上可用,但其回調簽名不相容,且不鼓勵在新應用程式中使用。 想要非同步回調的開發者應改用 WinBioAsyncOpenSession 搭配 NotificationMethodWINBIO_ASYNC_NOTIFY_CALLBACK

AsynchronousOpen 參數僅決定 open 操作是否會阻塞。 此參數不影響後續使用會話句柄的呼叫的完成行為。

如果你將 AsynchronousOpen 參數設為 TRUE,這個函式會在對參數進行初步驗證後立即回傳 S_OK 。 超過該點後偵測到的任何錯誤,都會依 照 NotificationMethod 參數指定的方法回報給呼叫者。 也就是說,成功的回傳值僅表示 WinBioAsyncOpenSession 參數正常,並不代表開啟操作成功。 要判斷公開行動是否成功,必須檢視 WINBIO_ASYNC_RESULT 結構。

需求

Requirement 價值觀
最低支援的用戶端 Windows 8 [僅限傳統型應用程式]
支援的最低伺服器 Windows Server 2012 [僅限傳統型應用程式]
目標平臺 窗戶
Header winbio.h(包括Winbio.h)
Library Winbio.lib 網站
DLL Winbio.dll

另請參閱

WinBioAsyncOpenFramework

WinBioCloseSession

WinBioOpenSession