General

Getting/setting device name

The name of the device is specified through the following registry key:

HKLM\Ident
  Name: REG_SZ

Example:

CeRegCreateKeyEx(HKLM, "Ident", "") => SUCCESS, 0x040b4560, OPENED_EXISTING
CeRegSetValueEx(0x040b4560, "Name", REG_SZ, "WM_Fetter_Zole") => SUCCESS
CeRegCloseKey(0x040b4560) => SUCCESS

Querying for sync version

HKLM\Software\Microsoft\Windows CE Services\Version contains a REG_DWORD with the major version in the leftmost 16 bits and the minor version in the rightmost 16 bits. This version is used to know which registry keys are available and their semantics (and possibly more, like which queries CeProcessConfig supports etc.).

For Windows Mobile 5 devices the version is 2.0.

Example:

CeRegOpenKeyEx(HKLM, "Software\Microsoft\Windows CE Services") => SUCCESS, 0x040b4da0
CeRegQueryValueEx(0x040b4da0, "Version", 4) => SUCCESS, 0x00020000
CeRegCloseKey(0x040b4da0) => SUCCESS

Partnerships

Enumerating existing partnerships

HKLM\Software\Microsoft\Windows CE Services\Partners\P1
  PId: REG_DWORD
  PName: REG_SZ

HKLM\Software\Microsoft\Windows CE Services\Partners\P2
  PId: REG_DWORD
  PName: REG_SZ

Creating a new partnership

  1. Enumerate existing partnerships.
  2. Call CeProcessConfig with a query for available sync sources, and if the number of sources doesn't match the number of partnerships enumerated in the previous step, we delete any "dangling" partnerships.

  3. Call CeProcessConfig to retrieve a list of PIM sync engines. We're supposed to know of any other non-PIM sync engines (there's probably a way to query for all sync engines as well).

  4. Generate a DWORD identifying the host as the primary identifier.
  5. Generate a GUID identifying the host as a data source.
  6. Call CeProcessConfig to set the configuration config for this GUID. For example:

<wap-provisioningdoc>
    <characteristic type="Sync">
        <characteristic type="Sources">
            <characteristic type="{69099894-F2B4-4389-A155-E6007B409927}">
                <parm name="Name" value="Windows PC"/>
                <parm name="Server" value="FZWARE2"/>
                <parm name="StoreType" value="2"/>
                <characteristic type="Engines">
                    <characteristic type="{176F4FFD-F20C-4BD4-BDD7-01D0726C567B}">
                        <characteristic type="Settings">
                            <parm name="User" value="DEFAULT"/>
                            <parm name="Domain" value="DEFAULT"/>
                            <parm name="Password" value="DEFAULT"/>
                            <parm name="SavePassword" value="1"/>
                            <parm name="UseSSL" value="0"/>
                            <parm name="ConflictResolution" value="1"/>
                            <parm name="URI" value="Microsoft-Server-ActiveSync"/>
                        <characteristic/>
                        <characteristic type="Providers">
                            <characteristic type="{C6D47067-6E92-480E-B0FC-4BA82182FAC7}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{783AE4F6-4C12-4423-8270-66361260D4F1}">
                                <parm name="Enabled" value="1"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{0DD8685C-E272-4FCB-9ECF-2EAD7EA2497B}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{4A5D9FE0-F139-4A63-A5A4-4F31CEEA02AD}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{8E98CB51-85A4-4777-8DEB-A0298DF8899F}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="1"/>
                                <parm name="Name" value="Notes"/>
                            <characteristic/>
                            <characteristic type="{7E29B5F7-C686-4B0C-9892-FD8BAD8E0D08}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="1"/>
                                <parm name="Name" value="Favorites"/>
                            <characteristic/>
                            <characteristic type="{B7B6ACB2-AF1D-43F5-BF9A-586111B263EF}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="1"/>
                                <parm name="Name" value="Files"/>
                            <characteristic/>
                            <characteristic type="Media">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="1"/>
                                <parm name="Name" value="Media"/>
                            <characteristic/>
                        <characteristic/>
                    <characteristic/>
                <characteristic/>
            <characteristic/>
        <characteristic/>
    <characteristic/>
<wap-provisioningdoc/>

where:

CeRegCreateKeyEx(HKLM, "Software\Microsoft\Windows CE Services\Partners", "") => SUCCESS, 0x040b4a40, OPENED_EXISTING

CeRegSetValueEx(0x040b4a40, "PCur", REG_DWORD, 0x00000001) => SUCCESS

CeRegCreateKeyEx(0x040b4a40, "P1", "") => SUCCESS, 0x040b4b00, OPENED_EXISTING
CeRegSetValueEx(0x040b4b00, "PId", REG_DWORD, 0x58533dc0) => SUCCESS
CeRegSetValueEx(0x040b4b00, "DataSourceID", REG_SZ, "{69099894-F2B4-4389-A155-E6007B409927}") => SUCCESS
CeRegSetValueEx(0x040b4b00, "PName", REG_SZ, "FZWARE2") => SUCCESS
CeRegCloseKey(0x040b4b00) => SUCCESS

CeRegCloseKey(0x040b4a40) => SUCCESS

where:

Deleting an existing partnership

CeProcessConfig is called with an XML stanza as below, with:

<wap-provisioningdoc>
    <characteristic type="Sync">
        <characteristic type="Sources">
            <nocharacteristic type="{C1027B2D-882B-4459-B0C7-D544FA2E8E79}">
            <nocharacteristic/>
        <characteristic/>
    <characteristic/>
<wap-provisioningdoc/>

The response, on success, is simply the same XML stanza echoed back (and LastError set to 6 -- FIXME: look up this errorcode)

Example sessions

Session where the PDA knows about two existing partnerships

CeRegCreateKeyEx(HKLM, "Software\Microsoft\Windows CE Services\Partners", "") => SUCCESS, 0x040b4e00, OPENED_EXISTING

CeRegCreateKeyEx(0x040b4e00, "P1", "") => SUCCESS, 0x040b4e60, OPENED_EXISTING
CeRegQueryValueEx(0x040b4e60, "PId", 4) => SUCCESS, 0x6e2a0c0a
CeRegQueryValueEx(0x040b4e60, "PName", 32) => SUCCESS, "FETTERZOLE"
CeRegCloseKey(0x040b4e60) => SUCCESS

CeRegCreateKeyEx(0x040b4e00, "P2", "") => SUCCESS, 0x040b4ec0, OPENED_EXISTING
CeRegQueryValueEx(0x040b4ec0, "PId", 4) => SUCCESS, 0x1158434c
CeRegQueryValueEx(0x040b4ec0, "PName", 32) => SUCCESS, "FZWARE"
CeRegCloseKey(0x040b4ec0) => SUCCESS

CeRegCloseKey(0x040b4e00) => SUCCESS

CeRegOpenKeyEx(HKLM, "Software\Microsoft\Windows CE Services") => SUCCESS, 0x040b4e00
CeRegQueryValueEx(0x040b4e00, "FileSyncPath", 1040) => FILE_NOT_FOUND
CeRegCloseKey(0x040b4e00) => SUCCESS

CeProcessConfig([230 bytes], 0x00000001) => SUCCESS, [2406 bytes]

szRequest:
----------
<wap-provisioningdoc>
    <characteristic type="Sync">
        <characteristic-query recursive="false" type="Sources">
        <characteristic-query/>
        <characteristic-query type="Settings">
        <characteristic-query/>
    <characteristic/>
<wap-provisioningdoc/>

szResponse:
-----------
<wap-provisioningdoc>
    <characteristic type="Sync">
        <characteristic recursive="false" type="Sources">
            <characteristic type="{C1027B2D-882B-4459-B0C7-D544FA2E8E79}"/>
            <characteristic type="{26DF7C59-98DB-48A2-86AA-353E2A530ED7}"/>
        <characteristic/>
        <characteristic type="Settings">
            <characteristic type="CarrierConnectorList"/>
            <characteristic type="PeakDays">
                <parm name="Fri" value="1"/>
                <parm name="Mon" value="1"/>
                <parm name="Sat" value="0"/>
                <parm name="Sun" value="0"/>
                <parm name="Thr" value="1"/>
                <parm name="Tue" value="1"/>
                <parm name="Wed" value="1"/>
            <characteristic/>
            <parm name="AllowSSLOption" value="1"/>
            <parm name="AutoSync" value="1"/>
            <parm name="AutoSyncWhenCradled" value="1"/>
            <parm name="BodyTruncation" value="5120"/>
            <parm name="CalendarAgeFilter" value="0"/>
            <parm name="CarrierConnector" value=""/>
            <parm name="ClientAutdSupport" value="3"/>
            <parm name="ClientCertAuthSupport" value="1"/>
            <parm name="ClientNegotiated" value="0"/>
            <parm name="ClientProtocolVersion" value=""/>
            <parm name="ConflictResolution" value="1"/>
            <parm name="Device" value="PocketPC"/>
            <parm name="DeviceAddressingMethod" value="0"/>
            <parm name="DeviceID" value=""/>
            <parm name="DevicePhoneNumber" value=""/>
            <parm name="DevicePhoneReadOnly" value="0"/>
            <parm name="DeviceSMSAddress" value=""/>
            <parm name="DisconnectWhenDone" value="1"/>
            <parm name="EmailAgeFilter" value="2"/>
            <parm name="EnableNonLocalCrossPollination" value="0"/>
            <parm name="HeartbeatDefault" value="480"/>
            <parm name="HeartbeatIncrement" value="300"/>
            <parm name="HeartbeatMax" value="1680"/>
            <parm name="HeartbeatMin" value="480"/>
            <parm name="MIMETruncation" value="5120"/>
            <parm name="MailBodyTruncation" value="512"/>
            <parm name="MailFileAttachments" value="0"/>
            <parm name="NotificationsSupported" value="0"/>
            <parm name="OffPeakFrequency" value="-1"/>
            <parm name="OutboundMailDelay" value="5"/>
            <parm name="PeakEndTime" value="1800"/>
            <parm name="PeakFrequency" value="-1"/>
            <parm name="PeakStartTime" value="0800"/>
            <parm name="RadioEnabledDevice" value="1"/>
            <parm name="SaveSentItems" value="1"/>
            <parm name="SendMailItemsImmediately" value="1"/>
            <parm name="SyncAPN" value=""/>
            <parm name="SyncAfterCount" value="0"/>
            <parm name="SyncAfterTime" value="0"/>
            <parm name="SyncAfterTimeWhenCradled" value="5"/>
            <parm name="SyncWhenRoaming" value="0"/>
            <parm name="VersionMajor" value="1"/>
            <parm name="VersionMinor" value="1"/>
        <characteristic/>
    <characteristic/>
<wap-provisioningdoc/>

CeProcessConfig([230 bytes], 0x00000001) => SUCCESS, [2767 bytes]

szRequest:
----------
<wap-provisioningdoc>
    <characteristic type="Sync">
        <characteristic type="Sources">
            <characteristic-query type="{C1027B2D-882B-4459-B0C7-D544FA2E8E79}">
            <characteristic-query/>
        <characteristic/>
    <characteristic/>
<wap-provisioningdoc/>

szResponse:
-----------
<wap-provisioningdoc>
    <characteristic type="Sync">
        <characteristic type="Sources">
            <characteristic type="{C1027B2D-882B-4459-B0C7-D544FA2E8E79}">
                <characteristic type="Engines">
                    <characteristic type="{176F4FFD-F20C-4BD4-BDD7-01D0726C567B}">
                        <characteristic type="CarrierConnectorList"/>
                        <characteristic type="Providers">
                            <characteristic type="{C3D12871-210E-0922-1188-DDA01BD31169}">
                                <parm name="Enabled" value="0"/>
                                <parm name="Name" value="Media"/>
                                <parm name="ReadOnly" value="1"/>
                            <characteristic/>
                            <characteristic type="{B7B6ACB2-AF1D-43F5-BF9A-586111B263EF}">
                                <parm name="Enabled" value="0"/>
                                <parm name="Name" value="Files"/>
                                <parm name="ReadOnly" value="1"/>
                            <characteristic/>
                            <characteristic type="{7E29B5F7-C686-4B0C-9892-FD8BAD8E0D08}">
                                <parm name="Enabled" value="0"/>
                                <parm name="Name" value="Favorites"/>
                                <parm name="ReadOnly" value="1"/>
                            <characteristic/>
                            <characteristic type="{8E98CB51-85A4-4777-8DEB-A0298DF8899F}">
                                <parm name="Enabled" value="0"/>
                                <parm name="Name" value="Notes"/>
                                <parm name="ReadOnly" value="1"/>
                            <characteristic/>
                            <characteristic type="{4A5D9FE0-F139-4A63-A5A4-4F31CEEA02AD}">
                                <parm name="Enabled" value="0"/>
                                <parm name="Name" value="Kalender"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{0DD8685C-E272-4FCB-9ECF-2EAD7EA2497B}">
                                <parm name="Enabled" value="0"/>
                                <parm name="Name" value="Kontakter"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{783AE4F6-4C12-4423-8270-66361260D4F1}">
                                <parm name="Enabled" value="1"/>
                                <parm name="Name" value="Oppgaver"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{C6D47067-6E92-480E-B0FC-4BA82182FAC7}">
                                <parm name="Enabled" value="0"/>
                                <parm name="Name" value="E-post"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                        <characteristic/>
                        <characteristic type="Settings">
                            <parm name="CarrierConnector" value=""/>
                            <parm name="ClientNegotiated" value="1"/>
                            <parm name="ClientProtocolVersion" value="2.5"/>
                            <parm name="ConflictResolution" value="1"/>
                            <parm name="DeviceAddressingMethod" value="0"/>
                            <parm name="DevicePhoneNumber" value=""/>
                            <parm name="DeviceSMSAddress" value=""/>
                            <parm name="Domain" value="DEFAULT"/>
                            <parm name="EmailAddress" value=""/>
                            <parm name="Logging" value="0"/>
                            <parm name="NotificationsSupported" value="0"/>
                            <parm name="RefreshCertAuthXml" value="0"/>
                            <parm name="SavePassword" value="1"/>
                            <parm name="ServerAutdSupport" value="0"/>
                            <parm name="ServerCertAuthRequired" value="0"/>
                            <parm name="URI" value="Microsoft-Server-ActiveSync"/>
                            <parm name="UseSSL" value="0"/>
                            <parm name="User" value="DEFAULT"/>
                        <characteristic/>
                    <characteristic/>
                <characteristic/>
                <parm name="Name" value="Vmware PC"/>
                <parm name="Server" value="FZWARE"/>
                <parm name="StoreType" value="2"/>
            <characteristic/>
        <characteristic/>
    <characteristic/>
<wap-provisioningdoc/>

CeProcessConfig([230 bytes], 0x00000001) => SUCCESS, [2772 bytes]

szRequest:
----------
<wap-provisioningdoc>
    <characteristic type="Sync">
        <characteristic type="Sources">
            <characteristic-query type="{26DF7C59-98DB-48A2-86AA-353E2A530ED7}">
            <characteristic-query/>
        <characteristic/>
    <characteristic/>
<wap-provisioningdoc/>

szResponse:
-----------
<wap-provisioningdoc>
    <characteristic type="Sync">
        <characteristic type="Sources">
            <characteristic type="{26DF7C59-98DB-48A2-86AA-353E2A530ED7}">
                <characteristic type="Engines">
                    <characteristic type="{176F4FFD-F20C-4BD4-BDD7-01D0726C567B}">
                        <characteristic type="CarrierConnectorList"/>
                        <characteristic type="Providers">
                            <characteristic type="{37120B52-E418-0E3E-4F98-AA3E26F5527F}">
                                <parm name="Enabled" value="0"/>
                                <parm name="Name" value="Media"/>
                                <parm name="ReadOnly" value="1"/>
                            <characteristic/>
                            <characteristic type="{B7B6ACB2-AF1D-43F5-BF9A-586111B263EF}">
                                <parm name="Enabled" value="0"/>
                                <parm name="Name" value="Files"/>
                                <parm name="ReadOnly" value="1"/>
                            <characteristic/>
                            <characteristic type="{7E29B5F7-C686-4B0C-9892-FD8BAD8E0D08}">
                                <parm name="Enabled" value="0"/>
                                <parm name="Name" value="Favorites"/>
                                <parm name="ReadOnly" value="1"/>
                            <characteristic/>
                            <characteristic type="{8E98CB51-85A4-4777-8DEB-A0298DF8899F}">
                                <parm name="Enabled" value="1"/>
                                <parm name="Name" value="Notes"/>
                                <parm name="ReadOnly" value="1"/>
                            <characteristic/>
                            <characteristic type="{4A5D9FE0-F139-4A63-A5A4-4F31CEEA02AD}">
                                <parm name="Enabled" value="1"/>
                                <parm name="Name" value="Kalender"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{0DD8685C-E272-4FCB-9ECF-2EAD7EA2497B}">
                                <parm name="Enabled" value="1"/>
                                <parm name="Name" value="Kontakter"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{783AE4F6-4C12-4423-8270-66361260D4F1}">
                                <parm name="Enabled" value="1"/>
                                <parm name="Name" value="Oppgaver"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{C6D47067-6E92-480E-B0FC-4BA82182FAC7}">
                                <parm name="Enabled" value="0"/>
                                <parm name="Name" value="E-post"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                        <characteristic/>
                        <characteristic type="Settings">
                            <parm name="CarrierConnector" value=""/>
                            <parm name="ClientNegotiated" value="1"/>
                            <parm name="ClientProtocolVersion" value="2.5"/>
                            <parm name="ConflictResolution" value="1"/>
                            <parm name="DeviceAddressingMethod" value="0"/>
                            <parm name="DevicePhoneNumber" value=""/>
                            <parm name="DeviceSMSAddress" value=""/>
                            <parm name="Domain" value="DEFAULT"/>
                            <parm name="EmailAddress" value=""/>
                            <parm name="Logging" value="0"/>
                            <parm name="NotificationsSupported" value="0"/>
                            <parm name="RefreshCertAuthXml" value="0"/>
                            <parm name="SavePassword" value="1"/>
                            <parm name="ServerAutdSupport" value="0"/>
                            <parm name="ServerCertAuthRequired" value="0"/>
                            <parm name="URI" value="Microsoft-Server-ActiveSync"/>
                            <parm name="UseSSL" value="0"/>
                            <parm name="User" value="DEFAULT"/>
                        <characteristic/>
                    <characteristic/>
                <characteristic/>
                <parm name="Name" value="Windows PC"/>
                <parm name="Server" value="FETTERZOLE"/>
                <parm name="StoreType" value="2"/>
            <characteristic/>
        <characteristic/>
    <characteristic/>
<wap-provisioningdoc/>

Session where the PDA doesn't have any partnerships and the first one is created

CeRegCreateKeyEx(HKLM, "Software\Microsoft\Windows CE Services\Partners", "") => SUCCESS, 0x040b4500, OPENED_EXISTING

CeRegCreateKeyEx(0x040b4500, "
P1", "") => SUCCESS, 0x040b45c0, CREATED_NEW
CeRegQueryValueEx(0x040b45c0, "PId", 4) => FILE_NOT_FOUND
CeRegCloseKey(0x040b45c0) => SUCCESS

CeRegCreateKeyEx(0x040b4500, "P2", "") => SUCCESS, 0x040b45c0, OPENED_EXISTING
CeRegQueryValueEx(0x040b45c0, "PId", 4) => FILE_NOT_FOUND
CeRegCloseKey(0x040b45c0) => SUCCESS

CeRegCloseKey(0x040b4500) => SUCCESS

CeRegOpenKeyEx(HKLM, "Software\Microsoft\Windows CE Services") => SUCCESS, 0x040b4500
CeRegQueryValueEx(0x040b4500, "FileSyncPath", 1040) => FILE_NOT_FOUND
CeRegCloseKey(0x040b4500) => SUCCESS

CeProcessConfig([230 bytes], 0x00000001) => SUCCESS, [2264 bytes]

szRequest:
----------
<wap-provisioningdoc>
    <characteristic type="Sync">
        <characteristic-query recursive="false" type="Sources">
        <characteristic-query/>
        <characteristic-query type="Settings">
        <characteristic-query/>
    <characteristic/>
<wap-provisioningdoc/>

szResponse:
-----------
<wap-provisioningdoc>
    <characteristic type="Sync">
        <characteristic recursive="false" type="Sources"/>
        <characteristic type="Settings">
            <characteristic type="CarrierConnectorList"/>
            <characteristic type="PeakDays">
                <parm name="Fri" value="1"/>
                <parm name="Mon" value="1"/>
                <parm name="Sat" value="0"/>
                <parm name="Sun" value="0"/>
                <parm name="Thr" value="1"/>
                <parm name="Tue" value="1"/>
                <parm name="Wed" value="1"/>
            <characteristic/>
            <parm name="AllowSSLOption" value="1"/>
            <parm name="AutoSync" value="1"/>
            <parm name="AutoSyncWhenCradled" value="1"/>
            <parm name="BodyTruncation" value="5120"/>
            <parm name="CalendarAgeFilter" value="0"/>
            <parm name="CarrierConnector" value=""/>
            <parm name="ClientAutdSupport" value="3"/>
            <parm name="ClientCertAuthSupport" value="1"/>
            <parm name="ClientNegotiated" value="0"/>
            <parm name="ClientProtocolVersion" value=""/>
            <parm name="ConflictResolution" value="1"/>
            <parm name="Device" value="PocketPC"/>
            <parm name="DeviceAddressingMethod" value="0"/>
            <parm name="DeviceID" value=""/>
            <parm name="DevicePhoneNumber" value=""/>
            <parm name="DevicePhoneReadOnly" value="0"/>
            <parm name="DeviceSMSAddress" value=""/>
            <parm name="DisconnectWhenDone" value="1"/>
            <parm name="EmailAgeFilter" value="2"/>
            <parm name="EnableNonLocalCrossPollination" value="0"/>
            <parm name="HeartbeatDefault" value="480"/>
            <parm name="HeartbeatIncrement" value="300"/>
            <parm name="HeartbeatMax" value="1680"/>
            <parm name="HeartbeatMin" value="480"/>
            <parm name="MIMETruncation" value="5120"/>
            <parm name="MailBodyTruncation" value="512"/>
            <parm name="MailFileAttachments" value="0"/>
            <parm name="NotificationsSupported" value="0"/>
            <parm name="OffPeakFrequency" value="-1"/>
            <parm name="OutboundMailDelay" value="5"/>
            <parm name="PeakEndTime" value="1800"/>
            <parm name="PeakFrequency" value="-1"/>
            <parm name="PeakStartTime" value="0800"/>
            <parm name="RadioEnabledDevice" value="1"/>
            <parm name="SaveSentItems" value="1"/>
            <parm name="SendMailItemsImmediately" value="1"/>
            <parm name="SyncAPN" value=""/>
            <parm name="SyncAfterCount" value="0"/>
            <parm name="SyncAfterTime" value="0"/>
            <parm name="SyncAfterTimeWhenCradled" value="5"/>
            <parm name="SyncWhenRoaming" value="0"/>
            <parm name="VersionMajor" value="1"/>
            <parm name="VersionMinor" value="1"/>
        <characteristic/>
    <characteristic/>
<wap-provisioningdoc/>

CeProcessConfig([230 bytes], 0x00000001) => SUCCESS, [1275 bytes]

szRequest:
----------
<wap-provisioningdoc>
    <characteristic type="Sync">
        <characteristic type="Engines">
            <characteristic-query type="{176F4FFD-F20C-4BD4-BDD7-01D0726C567B}">
            <characteristic-query/>
        <characteristic/>
    <characteristic/>
<wap-provisioningdoc/>

szResponse:
-----------
<wap-provisioningdoc>
    <characteristic type="Sync">
        <characteristic type="Engines">
            <characteristic type="{176F4FFD-F20C-4BD4-BDD7-01D0726C567B}">
                <characteristic type="Providers">
                    <characteristic type="{c6d47067-6e92-480e-b0fc-4ba82182fac7}">
                        <parm name="Name" value="E-post"/>
                        <parm name="ReadOnly" value="0"/>
                        <parm name="Enabled" value="1"/>
                    <characteristic/>
                    <characteristic type="{783ae4f6-4c12-4423-8270-66361260d4f1}">
                        <parm name="Name" value="Oppgaver"/>
                        <parm name="ReadOnly" value="0"/>
                        <parm name="Enabled" value="1"/>
                    <characteristic/>
                    <characteristic type="{0dd8685c-e272-4fcb-9ecf-2ead7ea2497b}">
                        <parm name="Name" value="Kontakter"/>
                        <parm name="ReadOnly" value="0"/>
                        <parm name="Enabled" value="1"/>
                    <characteristic/>
                    <characteristic type="{4a5d9fe0-f139-4a63-a5a4-4f31ceea02ad}">
                        <parm name="Name" value="Kalender"/>
                        <parm name="ReadOnly" value="0"/>
                        <parm name="Enabled" value="1"/>
                    <characteristic/>
                <characteristic/>
                <characteristic type="Settings">
                    <parm name="NotificationsSupported" value="0"/>
                    <parm name="URI" value="Microsoft-Server-ActiveSync"/>
                    <parm name="DeviceAddressingMethod" value="1"/>
                    <parm name="SyncAfterTimeWhenCradled" value="5"/>
                    <parm name="ConflictResolution" value="1"/>
                <characteristic/>
            <characteristic/>
        <characteristic/>
    <characteristic/>
<wap-provisioningdoc/>

NOTE: This query is limited to engines of type "{176F4FFD-F20C-4BD4-BDD7-01D0726C567B}", which are probably PIM-only engines. The rest of the engines presented are hard-coded, probably based on which generation device it's talking to. A confirmation of this assumption is that when testing with English ActiveSync and a PDA with Norwegian Windows Mobile 5, these PIM engines are presented with the device's Norwegian names, whilst the rest were in English.

CeRegCreateKeyEx(HKLM, "Ident", "") => SUCCESS, 0x040b4560, OPENED_EXISTING
CeRegSetValueEx(0x040b4560, "Name", REG_SZ, "WM_Fetter_Zole") => SUCCESS
CeRegCloseKey(0x040b4560) => SUCCESS

CeProcessConfig([2126 bytes], 0x00000001) => SUCCESS, [2083 bytes]

szRequest:
----------
<wap-provisioningdoc>
    <characteristic type="Sync">
        <characteristic type="Sources">
            <characteristic type="{69099894-F2B4-4389-A155-E6007B409927}">
                <parm name="Name" value="Windows PC"/>
                <parm name="Server" value="FZWARE2"/>
                <parm name="StoreType" value="2"/>
                <characteristic type="Engines">
                    <characteristic type="{176F4FFD-F20C-4BD4-BDD7-01D0726C567B}">
                        <characteristic type="Settings">
                            <parm name="User" value="DEFAULT"/>
                            <parm name="Domain" value="DEFAULT"/>
                            <parm name="Password" value="DEFAULT"/>
                            <parm name="SavePassword" value="1"/>
                            <parm name="UseSSL" value="0"/>
                            <parm name="ConflictResolution" value="1"/>
                            <parm name="URI" value="Microsoft-Server-ActiveSync"/>
                        <characteristic/>
                        <characteristic type="Providers">
                            <characteristic type="{C6D47067-6E92-480E-B0FC-4BA82182FAC7}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{783AE4F6-4C12-4423-8270-66361260D4F1}">
                                <parm name="Enabled" value="1"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{0DD8685C-E272-4FCB-9ECF-2EAD7EA2497B}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{4A5D9FE0-F139-4A63-A5A4-4F31CEEA02AD}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{8E98CB51-85A4-4777-8DEB-A0298DF8899F}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="1"/>
                                <parm name="Name" value="Notes"/>
                            <characteristic/>
                            <characteristic type="{7E29B5F7-C686-4B0C-9892-FD8BAD8E0D08}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="1"/>
                                <parm name="Name" value="Favorites"/>
                            <characteristic/>
                            <characteristic type="{B7B6ACB2-AF1D-43F5-BF9A-586111B263EF}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="1"/>
                                <parm name="Name" value="Files"/>
                            <characteristic/>
                            <characteristic type="Media">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="1"/>
                                <parm name="Name" value="Media"/>
                            <characteristic/>
                        <characteristic/>
                    <characteristic/>
                <characteristic/>
            <characteristic/>
        <characteristic/>
    <characteristic/>
<wap-provisioningdoc/>

szResponse:
-----------
<wap-provisioningdoc>
    <characteristic type="Sync">
        <characteristic type="Sources">
            <characteristic type="{69099894-F2B4-4389-A155-E6007B409927}">
                <parm name="Name" value="Windows PC"/>
                <parm name="Server" value="FZWARE2"/>
                <parm name="StoreType" value="2"/>
                <characteristic type="Engines">
                    <characteristic type="{176F4FFD-F20C-4BD4-BDD7-01D0726C567B}">
                        <characteristic type="Settings">
                            <parm name="User" value="DEFAULT"/>
                            <parm name="Domain" value="DEFAULT"/>
                            <parm name="Password" value="DEFAULT"/>
                            <parm name="SavePassword" value="1"/>
                            <parm name="UseSSL" value="0"/>
                            <parm name="ConflictResolution" value="1"/>
                            <parm name="URI" value="Microsoft-Server-ActiveSync"/>
                        <characteristic/>
                        <characteristic type="Providers">
                            <characteristic type="{C6D47067-6E92-480E-B0FC-4BA82182FAC7}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{783AE4F6-4C12-4423-8270-66361260D4F1}">
                                <parm name="Enabled" value="1"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{0DD8685C-E272-4FCB-9ECF-2EAD7EA2497B}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{4A5D9FE0-F139-4A63-A5A4-4F31CEEA02AD}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="0"/>
                            <characteristic/>
                            <characteristic type="{8E98CB51-85A4-4777-8DEB-A0298DF8899F}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="1"/>
                                <parm name="Name" value="Notes"/>
                            <characteristic/>
                            <characteristic type="{7E29B5F7-C686-4B0C-9892-FD8BAD8E0D08}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="1"/>
                                <parm name="Name" value="Favorites"/>
                            <characteristic/>
                            <characteristic type="{B7B6ACB2-AF1D-43F5-BF9A-586111B263EF}">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="1"/>
                                <parm name="Name" value="Files"/>
                            <characteristic/>
                            <characteristic type="Media">
                                <parm name="Enabled" value="0"/>
                                <parm name="ReadOnly" value="1"/>
                                <parm name="Name" value="Media"/>
                            <characteristic/>
                        <characteristic/>
                    <characteristic/>
                <characteristic/>
            <characteristic/>
        <characteristic/>
    <characteristic/>
<wap-provisioningdoc/>

CeProcessConfig([169 bytes], 0x00000001) => SUCCESS, [2020 bytes]

szRequest:
----------
<wap-provisioningdoc>
    <characteristic type="Sync">
        <characteristic-query recursive="false" type="Settings">
        <characteristic-query/>
    <characteristic/>
<wap-provisioningdoc/>

szResponse:
-----------
<wap-provisioningdoc>
    <characteristic type="Sync">
        <characteristic recursive="false" type="Settings">
            <characteristic type="CarrierConnectorList"/>
            <characteristic type="PeakDays"/>
            <parm name="AllowSSLOption" value="1"/>
            <parm name="AutoSync" value="1"/>
            <parm name="AutoSyncWhenCradled" value="1"/>
            <parm name="BodyTruncation" value="5120"/>
            <parm name="CalendarAgeFilter" value="0"/>
            <parm name="CarrierConnector" value=""/>
            <parm name="ClientAutdSupport" value="3"/>
            <parm name="ClientCertAuthSupport" value="1"/>
            <parm name="ClientNegotiated" value="0"/>
            <parm name="ClientProtocolVersion" value=""/>
            <parm name="ConflictResolution" value="1"/>
            <parm name="Device" value="PocketPC"/>
            <parm name="DeviceAddressingMethod" value="0"/>
            <parm name="DeviceID" value=""/>
            <parm name="DevicePhoneNumber" value=""/>
            <parm name="DevicePhoneReadOnly" value="0"/>
            <parm name="DeviceSMSAddress" value=""/>
            <parm name="DisconnectWhenDone" value="1"/>
            <parm name="EmailAgeFilter" value="2"/>
            <parm name="EnableNonLocalCrossPollination" value="0"/>
            <parm name="HeartbeatDefault" value="480"/>
            <parm name="HeartbeatIncrement" value="300"/>
            <parm name="HeartbeatMax" value="1680"/>
            <parm name="HeartbeatMin" value="480"/>
            <parm name="MIMETruncation" value="5120"/>
            <parm name="MailBodyTruncation" value="512"/>
            <parm name="MailFileAttachments" value="0"/>
            <parm name="NotificationsSupported" value="0"/>
            <parm name="OffPeakFrequency" value="-1"/>
            <parm name="OutboundMailDelay" value="5"/>
            <parm name="PeakEndTime" value="1800"/>
            <parm name="PeakFrequency" value="-1"/>
            <parm name="PeakStartTime" value="0800"/>
            <parm name="RadioEnabledDevice" value="1"/>
            <parm name="SaveSentItems" value="1"/>
            <parm name="SendMailItemsImmediately" value="1"/>
            <parm name="SyncAPN" value=""/>
            <parm name="SyncAfterCount" value="0"/>
            <parm name="SyncAfterTime" value="0"/>
            <parm name="SyncAfterTimeWhenCradled" value="5"/>
            <parm name="SyncWhenRoaming" value="0"/>
            <parm name="VersionMajor" value="1"/>
            <parm name="VersionMinor" value="1"/>
        <characteristic/>
    <characteristic/>
<wap-provisioningdoc/>

CeProcessConfig([130 bytes], 0x00000001) => SUCCESS, [260 bytes]

szRequest:
----------
<wap-provisioningdoc>
    <characteristic-query recursive="false" type="CM_ProxyEntries">
    <characteristic-query/>
<wap-provisioningdoc/>

szResponse:
-----------
<wap-provisioningdoc>
    <characteristic recursive="false" type="CM_ProxyEntries">
        <characteristic type="null-corp-{18AD9FBD-F716-ACB6-FD8A-1965DB95B814}"/>
        <characteristic type="HTTP-{ADB0B001-10B5-3F39-27C6-9742E785FCD4}"/>
    <characteristic/>
<wap-provisioningdoc/>

CeProcessConfig([335 bytes], 0x00000001) => SUCCESS, [1016 bytes]

szRequest:
----------
<wap-provisioningdoc>
    <characteristic type="CM_ProxyEntries">
        <characteristic-query recursive="false" type="null-corp-{18AD9FBD-F716-ACB6-FD8A-1965DB95B814}">
        <characteristic-query/>
        <characteristic-query recursive="false" type="HTTP-{ADB0B001-10B5-3F39-27C6-9742E785FCD4}">
        <characteristic-query/>
    <characteristic/>
<wap-provisioningdoc/>

szResponse:
-----------
<wap-provisioningdoc>
    <characteristic type="CM_ProxyEntries">
        <characteristic recursive="false" type="null-corp-{18AD9FBD-F716-ACB6-FD8A-1965DB95B814}">
            <parm name="SrcId" value="{18AD9FBD-F716-ACB6-FD8A-1965DB95B814}"/>
            <parm name="DestId" value="{A1182988-0D73-439E-87AD-2A5B369F808B}"/>
            <parm name="Proxy" value=""/>
            <parm name="Override" value=""/>
            <parm name="Enable" value="1"/>
            <parm name="Type" value="0"/>
            <parm name="Username" value=""/>
            <parm name="Password" value=""/>
            <parm name="ExtraInfo" value=""/>
        <characteristic/>
        <characteristic recursive="false" type="HTTP-{ADB0B001-10B5-3F39-27C6-9742E785FCD4}">
            <parm name="SrcId" value="{ADB0B001-10B5-3F39-27C6-9742E785FCD4}"/>
            <parm name="DestId" value="{436EF144-B4FB-4863-A041-8F905A62C572}"/>
            <parm name="Proxy" value=""/>
            <parm name="Override" value=""/>
            <parm name="Enable" value="1"/>
            <parm name="Type" value="0"/>
            <parm name="Username" value=""/>
            <parm name="Password" value=""/>
            <parm name="ExtraInfo" value=""/>
        <characteristic/>
    <characteristic/>
<wap-provisioningdoc/>

CeProcessConfig([227 bytes], 0x00000001) => SUCCESS, [226 bytes]

szRequest:
----------
<wap-provisioningdoc>
    <characteristic type="CM_NetEntries">
        <characteristic type="CurrentDTPTNetwork">
            <parm name="DestId" value="{ADB0B001-10B5-3F39-27C6-9742E785FCD4}"/>
        <characteristic/>
    <characteristic/>
<wap-provisioningdoc/>

szResponse:
-----------
<wap-provisioningdoc>
    <characteristic type="CM_NetEntries">
        <characteristic type="CurrentDTPTNetwork">
            <parm name="DestId" value="{ADB0B001-10B5-3F39-27C6-9742E785FCD4}"/>
        <characteristic/>
    <characteristic/>
<wap-provisioningdoc/>

CeSyncStart([145 bytes]) => SUCCESS

szXML:
------
<sync xmlns="http://schemas.microsoft.com/as/2004/core" type="Interactive">
    <partner id="{69099894-F2B4-4389-A155-E6007B409927}">
    <partner/>
<sync/>

CeRegCreateKeyEx(HKLM, "Software\Microsoft\Windows CE Services\Partners", "") => SUCCESS, 0x040b4a40, OPENED_EXISTING

CeRegCreateKeyEx(0x040b4a40, "P1", "") => SUCCESS, 0x040b4b00, OPENED_EXISTING
CeRegQueryValueEx(0x040b4b00, "PId", 4) => FILE_NOT_FOUND
CeRegCloseKey(0x040b4b00) => SUCCESS

CeRegCreateKeyEx(0x040b4a40, "P2", "") => SUCCESS, 0x040b4b00, OPENED_EXISTING
CeRegQueryValueEx(0x040b4b00, "PId", 4) => FILE_NOT_FOUND
CeRegCloseKey(0x040b4b00) => SUCCESS

CeRegCloseKey(0x040b4a40) => SUCCESS

CeRegCreateKeyEx(HKLM, "Software\Microsoft\Windows CE Services\Partners", "") => SUCCESS, 0x040b4a40, OPENED_EXISTING

CeRegSetValueEx(0x040b4a40, "PCur", REG_DWORD, 0x00000001) => SUCCESS

CeRegCreateKeyEx(0x040b4a40, "P1", "") => SUCCESS, 0x040b4b00, OPENED_EXISTING
CeRegSetValueEx(0x040b4b00, "PId", REG_DWORD, 0x58533dc0) => SUCCESS
CeRegSetValueEx(0x040b4b00, "DataSourceID", REG_SZ, "{69099894-F2B4-4389-A155-E6007B409927}") => SUCCESS
CeRegSetValueEx(0x040b4b00, "PName", REG_SZ, "FZWARE2") => SUCCESS

CeGetFileAttributes("\Restart Synchronization Marker.1") => 0xffffffff

CeRegCloseKey(0x040b4a40) => SUCCESS
CeRegCloseKey(0x040b4b00) => SUCCESS

CeRegOpenKeyEx(HKLM, "Software\Microsoft\Windows CE Services") => SUCCESS, 0x040b4b00
CeRegSetValueEx(0x040b4b00, "RasTimeoutResponse", REG_DWORD, 60) => SUCCESS
CeRegCloseKey(0x040b4b00) => SUCCESS

CeRegCreateKeyEx(HKLM, "Software\Microsoft\Windows CE Services", "") => SUCCESS, 0x040b4b00, OPENED_EXISTING
CeRegSetValueEx(0x040b4b00, "ExcludeExts", REG_SZ, "lnk,tmp,cdb,mdb") => SUCCESS
CeRegCloseKey(0x040b4b00) => SUCCESS

CeRegOpenKeyEx(HKLM, "Software\Microsoft\Windows CE Services\Partners") => SUCCESS, 0x040b4b00
CeRegQueryValueEx(0x040b4b00, "PCur", 4) => SUCCESS, 0x00000001
CeRegCloseKey(0x040b4b00) => SUCCESS
CeGetFileAttributes("\Restart Synchronization Marker.1") => 0xffffffff

CeStartReplication() => 0x00000001 (LastError = 0x00000019)

RAPI_EXP_28() => SUCCESS (LastError = 0x000000b7)

to 5678, then "$UPTODATE$" from port 999, then send some more magic to the first client on 5678. The UI changes to "Synchronized", and right after that two responses from the first client on 5678.

NOTE: The last part is somewhat inaccurate, as SocketSpy doesn't, at the time of this writing, catch the HTTP traffic where the actual synchronization is done. This is because it's done by a kernel http daemon through the httpapi.dll API, which will be intercepted in the near future.

TechnicalInformation/Synchronisation (last edited 2007-07-30 13:30:38 by JonnyLamb)