出厂后的Windows Mobile手机设置需要修改怎么办呢?这个时候就可以通过Configuration Service Provider(以下简称CSP),它可以用来修改、设置、查询或修改设置。首先,Server Push给手机一个消息,这个消息中包含了所需要操作的信息。手机收到这个push消息后,Configuration Manager(以下简称CM)会以一个XML的形式发送命令给一个指定的CSP,然后这个CSP会根据XML中的内容来完成操作。比方说有一个XML文件如下:
<wap-provisioningdoc>
<characteristic type="Registry">
<characteristic type="HKCU/Software/Microsoft/TestKey3">
<parm name="TestValue" value="5" datatype="integer" />
</characteristic>
</characteristic>
</wap-provisioningdoc>
第一个characteristic type是Registry,说明是需要Registry CSP来进行操作的,之后的就是对应的Registry Key和Value了。想要了解Provisioning XML的具体格式,请参考MSPROV DTD Elements。
如果要模拟Provisioning,有两种方式:通过RapiConfig.exe或调用API DMProcessConfigXML()。以下是Sample Code:
- // WAP provisioning XML to add a new browser favorite.
- LPCWSTR g_wszFavoriteXml =
- L"<wap-provisioningdoc>"
- L"<characteristic type=/"BrowserFavorite/">"
- L"<characteristic type=/"Baldwin Museum of Science/">"
- L"<parm name=/"URL/" value=/"http://www.baldwinmuseumofscience.com/"/>"
- L"</characteristic>"
- L"</characteristic>"
- L"</wap-provisioningdoc>";
- // Use configuration XML to add a new browser favorite to the device.
- HRESULT AddFavorite()
- {
- HRESULT hr = E_FAIL;
- LPWSTR wszOutput = NULL;
- // Process the XML.
- hr = DMProcessConfigXML(g_wszFavoriteXml, CFGFLAG_PROCESS, &wszOutput);
- // The caller must delete the XML returned from DMProcessConfigXML.
- delete [] wszOutput;
- return hr;
- }