读取sim 卡联系人信息

读取sim 卡联系人信息
 
代码
SIMMgr.h
  1. #pragma once
  2. #include <simmgr.h>
  3. #pragma comment(lib, "cellcore.lib")
  4. class CSIMMgr
  5. {
  6. public:
  7.     CSIMMgr(void);
  8.     ~CSIMMgr(void);
  9.     BOOL InitializeSIM();
  10.     BOOL GetPhoneBookList();
  11. private:
  12.     HSIM g_hSim;
  13.     SIMCAPS g_simcaps;
  14.     BYTE * g_pbyteInUse;// PB usage cache
  15. };
SIMMgr.cpp
  1. #include "StdAfx.h"
  2. #include "SIMMgr.h"
  3. const DWORD     g_dwLocation = SIM_PBSTORAGE_SIM;
  4. CSIMMgr::CSIMMgr(void)
  5. {
  6.     g_hSim = NULL;
  7. }
  8. CSIMMgr::~CSIMMgr(void)
  9. {
  10.     if (g_hSim)
  11.         SimDeinitialize(g_hSim);
  12. }
  13. BOOL CSIMMgr::InitializeSIM()
  14. {
  15.     if (SUCCEEDED(SimInitialize(SIM_INIT_NONE, NULL, 0, &g_hSim)))
  16.     {
  17.         if (SUCCEEDED(SimGetDevCaps(g_hSim, SIM_CAPSTYPE_PBINDEXRANGE, &g_simcaps)))
  18.         {
  19.             // Allocate PB usage cache
  20.             g_pbyteInUse = new BYTE[
  21.                 (g_simcaps.dwMaxPBIndex - g_simcaps.dwMinPBIndex)/(sizeof(*g_pbyteInUse)*8)];
  22.             if (NULL != g_pbyteInUse)
  23.                 return TRUE;                
  24.         }
  25.         SimDeinitialize(g_hSim);
  26.         g_hSim = NULL;
  27.     }
  28.     return FALSE;
  29. }
  30. BOOL CSIMMgr::GetPhoneBookList()
  31. {
  32.     SIMPHONEBOOKENTRY spbe;
  33.     // Clear PB usage cache
  34.     ZeroMemory(g_pbyteInUse, (g_simcaps.dwMaxPBIndex - g_simcaps.dwMinPBIndex)/(sizeof(*g_pbyteInUse)*8));
  35.     // Iterate through the entries, adding valid PB entries to the LV
  36.     for(DWORD i = g_simcaps.dwMinPBIndex; i <= g_simcaps.dwMaxPBIndex; i++)
  37.     {
  38.         // assume: error means location is not being used
  39.         if (SUCCEEDED(SimReadPhonebookEntry(g_hSim, g_dwLocation, i, &spbe)))
  40.         {
  41.             // Update PB usage cache
  42.             g_pbyteInUse[(i-g_simcaps.dwMinPBIndex)/(sizeof(*g_pbyteInUse)*8)] |=
  43.                 (1<<((i-g_simcaps.dwMinPBIndex)%(sizeof(*g_pbyteInUse)*8)));
  44.         }
  45.     }
  46.     // set the focus and return
  47.     return TRUE;
  48. }
 
具体的每一条sim联系人信息相见
  1. // -----------------------------------------------------------------------------
  2. //
  3. // @doc EXTERNAL
  4. //
  5. // @struct SIMPHONEBOOKENTRY | A SIM phonebook entry
  6. //
  7. // @comm None
  8. //
  9. // -----------------------------------------------------------------------------
  10. typedef struct simphonebookentry_tag {
  11.     DWORD cbSize;                                   // @field Size of the structure in bytes
  12.     DWORD dwParams;                                 // @field Indicates valid parameter values
  13.     TCHAR lpszAddress[MAX_LENGTH_ADDRESS];          // @field The actual phone number
  14.     DWORD dwAddressType;                            // @field A SIM_ADDRTYPE_* constant
  15.     DWORD dwNumPlan;                                // @field A SIM_NUMPLAN_* constant
  16.     TCHAR lpszText[MAX_LENGTH_PHONEBOOKENTRYTEXT];  // @field Text assocaited with the entry
  17. } SIMPHONEBOOKENTRY, *LPSIMPHONEBOOKENTRY;
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值