SIM API

1 #include "simmgr.h"
2
这些函数是SIM管理器API的一部分,它们使能管理SIM卡上存储的信息。

HRESULT SimInitialize (
   DWORD dwFlags,
   SIMCALLBACK lpfnCallBack,
   DWORD dwParam,
   LPHSIM lphSim
);
参数:
dwFlags
指出要接受的通知,如果希望得到通知怎么设置为SIM_INIT_SIMCARD_NOTIFICATIONS (0x00000001)否则置零

lpfnCallBack
通知消息的回调函数,参数可为空如果不想获得通知消息的话。

dwParam
各个通知消息传递的参数,参数可为空。

lphSim
指向一个后续调用的函数需要的HSIM句柄


返回值:
如果成功返回S_OK,或者一个SIM_E错误常数,定义包含在SIM错误管理的常数表。

条件:
Smartphone Platforms: Smartphone 2002 and later
Pocket PC Platforms: Pocket PC 2002 and later
操作系统版本: Windows CE 3.0 and later
头文件: simmgr.h
库: cellcore.lib


-----------------------------------------------------

SimGetPhonebookStatus函数得到本地通讯簿的状态。

HRESULT SimGetPhonebookStatus (
   HSIM hSim,
   DWORD dwLocation,
   LPDWORD lpdwUsed,
   LPDWORD lpdwTotal
);

参数:

hSim
指向一个有效的HSIM句柄

dwLocation
一个通讯簿使用的存储库值;等于一个SIM_PBSTORAGE包含的值.
值的描述:
SIM_PBSTORAGE_EMERGENCY 紧急拨号列表
SIM_PBSTORAGE_FIXEDDIALING SIM 固定的拨号列表
SIM_PBSTORAGE_LASTDIALING SIM 最近的拨号列表
SIM_PBSTORAGE_OWNNUMBERS SIM 自定义的拨号列表
SIM_PBSTORAGE_SIM General SIM 仓库

lpdwUsed
使用的库的号码

lpdwTotal
库的总数

返回值:
如果成功返回S_OK,或者一个SIM_E错误常数,定义包含在SIM错误管理的常数表。

条件:
Smartphone Platforms: Smartphone 2002 and later
Pocket PC Platforms: Pocket PC 2002 and later
操作系统版本: Windows CE 3.0 and later
头文件: simmgr.h
库: cellcore.lib


-----------------------------------------------------

HRESULT SimReadPhonebookEntry (
   HSIM hSim,
   DWORD dwLocation,
   DWORD dwIndex,
   LPSIMPHONEBOOKENTRY lpPhonebookEntry
);

参数:

hSim
包含一个有效的HSIM句柄。

dwLocation
一个通讯簿使用的存储库值;等于一个SIM_PBSTORAGE包含的值.
值的描述:
SIM_PBSTORAGE_EMERGENCY 紧急拨号列表
SIM_PBSTORAGE_FIXEDDIALING SIM 固定的拨号列表
SIM_PBSTORAGE_LASTDIALING SIM 最近的拨号列表
SIM_PBSTORAGE_OWNNUMBERS SIM 自定义的拨号列表
SIM_PBSTORAGE_SIM General SIM 仓库

dwIndex
要找回的入口索引

lpPhonebookEntry
一个通讯簿入口结构体的指针

返回值:
如果成功返回S_OK,或者一个SIM_E错误常数,定义包含在SIM错误管理的常数表。

条件:
Smartphone Platforms: Smartphone 2002 and later
Pocket PC Platforms: Pocket PC 2002 and later
操作系统版本: Windows CE 3.0 and later
头文件: simmgr.h
库: cellcore.lib

-----------------------------------------------------

HRESULT SimDeinitialize (
   HSIM hSim
);

参数
hSim
一个有效的已初始化的HSIM句柄

返回值:
如果成功返回S_OK,或者一个SIM_E错误常数,定义包含在SIM错误管理的常数表。

条件:
Smartphone Platforms: Smartphone 2002 and later
Pocket PC Platforms: Pocket PC 2002 and later
操作系统版本: Windows CE 3.0 and later
头文件: simmgr.h
库: cellcore.lib

-----------------------------------------------------

Simmgr.h
这些结构体是SIM(Subscriber Identity Module)管理API的一部分,他们能够管理SIM卡的存储信息

结构体描述:

SIMCAPS (SP + PPC)
SIM各种不同的地址(?)
Addresses various capabilities of the SIM.

SIMFILEREFRESH (SP + PPC)
包含了那些文件已经被改变的信息

SIMLOCKINGPWDLENGTH (SP + PPC)
确定SIM最小的密码长度

SIMMESSAGE (SP + PPC)
包含一个SIM信息入口

SIMMESSAGECHANGE (SP + PPC)
包含一个短信息服务(SMS)消息已经被改变的信息并且这些都是SIM上的。

SIMPBECHANGE (SP + PPC)
包含那个SIM通讯簿的入口已经改变了的信息

SIMPHONEBOOKENTRY (SP + PPC)
支持一个SIM通讯簿入口

SIMRECORDINFO (SP + PPC)
包含一个详细的SIM文件信息

 

http://hi.baidu.com/%B4%F3%C2%D7%D7%D3/blog/item/2f1472de1d9f7e5294ee3739.html

 

 

 

 

===================================================================================

 

SIM 管理器 API

  在 Pocket PC Phone 中,您可以使用一系列 Windows CE API 调用(统称为 SIM 管理器)来访问 SIM 卡上的信息。以下为 SIM 管理器 API(按功能分组):
表 1:SIM 管理器 API

 


会话以调用 SimInitialize 开始,这将返回一个 SIM 句柄,此后,在调用 SIM 管理器 API 函数时均需要此句柄。通过将此句柄传递给 SimDeinitialize 来终止会话。

例子程序:

如何读取SIM卡联系人:

void   ReadSimContact(SIMPHONEBOOKENTRY ContactOutBuf)
{
 HSIM   hSim   =   NULL;
 SIMCAPS   simcaps;

 if   (FAILED(SimInitialize(SIM_INIT_NONE,   NULL,   0,   &hSim)))
  return;
 if   (FAILED(SimGetDevCaps(hSim,   SIM_CAPSTYPE_PBINDEXRANGE,   &simcaps)))
  return;

 DWORD  dwRecNum = 0;
 DWORD dwCurRec = 0;
 dwRecNum = simcaps.dwMaxPBIndex - simcaps.dwMinPBIndex+1;
 dwCurRec = simcaps.dwMinPBIndex;

 while( dwCurRec <= dwRecNum )
 {
  if( SimReadPhonebookEntry(hSim, SIM_PBSTORAGE_SIM, dwCurRec, &ContactOutBuf) == S_OK)//If the index is unused
  {
   dwCurRec++;
  }
  else//联系人已经读完 跳出循环
  {
   break;
  }
 }
 SimDeinitialize(hSim);
 hSim =  NULL;
}

写入SIM卡联系人:

BOOL   WriteSimContact(SIMPHONEBOOKENTRY ContactInBuf)
{
 HSIM   hSim   =   NULL;
 SIMCAPS   simcaps;

 if   (FAILED(SimInitialize(SIM_INIT_NONE,   NULL,   0,   &hSim)))
  return FALSE;
 if   (FAILED(SimGetDevCaps(hSim,   SIM_CAPSTYPE_PBINDEXRANGE,   &simcaps)))
  return FALSE;

 DWORD  dwRecNum = 0;
 DWORD dwCurRec = 0;
 dwRecNum = simcaps.dwMaxPBIndex - simcaps.dwMinPBIndex+1;
 dwCurRec = simcaps.dwMinPBIndex;
 SIMPHONEBOOKENTRY ContactOutBuf = {0};

 while( dwCurRec <= dwRecNum ) //往后写
 {
  if(FAILED(SimReadPhonebookEntry(hSim, SIM_PBSTORAGE_SIM, dwCurRec, &ContactOutBuf)))//If the index is unused
  {      
   if( SimWritePhonebookEntry (hSim, SIM_PBSTORAGE_SIM,dwCurRec , &ContactInBuf)== S_OK )//Write the entrySIM_PBINDEX_FIRSTAVAILABLE
   {
               dwCurRec++;
   }  
  }
  else
  {
            dwCurRec++;  
  }
 }
 SimDeinitialize(hSim);
 hSim =  NULL;
 return TRUE;
}

删除SIM卡联系人:

BOOL  DeleteSimContact(void)
{
 HSIM hSim = NULL;
 SIMCAPS simcaps;
 
 if   (FAILED(SimInitialize(SIM_INIT_NONE,   NULL,   0,   &hSim)))
 {
  return FALSE;
 }
 if   (FAILED(SimGetDevCaps(hSim,   SIM_CAPSTYPE_PBINDEXRANGE,   &simcaps)))
 {
  return FALSE;
 }
 DWORD  dwRecNum = 0;
 DWORD  dwCurRec = 0;
 dwRecNum = simcaps.dwMaxPBIndex - simcaps.dwMinPBIndex+1;
 dwCurRec = simcaps.dwMinPBIndex;
 while( dwCurRec <= dwRecNum )
 {  
  SimDeletePhonebookEntry(hSim,SIM_PBSTORAGE_SIM,dwCurRec);
  dwCurRec++;
 }
 SimDeinitialize(hSim);
 hSim = NULL;
 return TRUE;
}

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/woxinfei/archive/2008/05/05/2394256.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值