BS2_GetUserSmallInfos
+ v2.6.3 사용자 식별자에 해당하는 사용자 정보를 가져옵니다.
BS2UserBlob을 이용하는 BS2_GetUserInfos와의 차이는 메모리 효율을 위해 3번째 인자 BS2UserSmallBlob 멤버 BS2UserPhoto가 포인터 처리된 것을 제외하고 모두 동일합니다.
함수
#include "BS_API.h"
int BS2_GetUserSmallInfos(void* context, uint32_t deviceId, char* uids, uint32_t uidCount, BS2UserSmallBlob* userBlob);
파라미터
-
[In]
context: Context -
[In]
deviceId: 장치 식별자 -
[In]
uids: 가져오고자 하는 사용자 식별자 리스트 -
[In]
uidCount: 사용자 식별자 개수 -
[Out]
userBlob: 사용자 정보를 저장할 포인터
반환 값
성공적으로 수행될 경우 BS_SDK_SUCCESS를 반환하고, 에러가 발생할 경우 상응하는 에러 코드를 반환합니다.
샘플 코드
C#
if (numUserIds > 0)
{
IntPtr curUidObjs = outUidObjs;
BS2UserSmallBlob[] userBlobs = new BS2UserSmallBlob[USER_PAGE_SIZE];
Console.WriteLine("Number of users : ({0}).", numUserIds);
for (UInt32 idx = 0; idx < numUserIds; )
{
UInt32 available = numUserIds - idx;
if (available > USER_PAGE_SIZE)
{
available = USER_PAGE_SIZE;
}
result = (BS2ErrorCode)API.BS2_GetUserSmallInfos(sdkContext, deviceID, curUidObjs, available, userBlobs);
if (result == BS2ErrorCode.BS_SDK_SUCCESS)
{
for (UInt32 loop = 0; loop < available; ++loop)
{
print(userBlobs[loop].user);
// don't need to release cardObj, FingerObj, FaceObj because we get only BS2User
if (userBlobs[loop].cardObjs != IntPtr.Zero)
API.BS2_ReleaseObject(userBlobs[loop].cardObjs);
if (userBlobs[loop].fingerObjs != IntPtr.Zero)
API.BS2_ReleaseObject(userBlobs[loop].fingerObjs);
if (userBlobs[loop].faceObjs != IntPtr.Zero)
API.BS2_ReleaseObject(userBlobs[loop].faceObjs);
if (userBlobs[loop].user_photo_obj != IntPtr.Zero)
API.BS2_ReleaseObject(userBlobs[loop].user_photo_obj);
}
idx += available;
curUidObjs += (int)available * BS2Environment.BS2_USER_ID_SIZE;
}
else
{
Console.WriteLine("Got error({0}).", result);
break;
}
}
API.BS2_ReleaseObject(outUidObjs);
}