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