Modifying Extension Data

The Administrator extension DLL can use configuration functions to register for changes to extension data by creating an advise object. Then, when an administrator opens the directory object and edits its extension data, the extension DLL receives a notification about these changes. It can then modify properties on the directory object, using intermediate steps that pack and unpack the data.

To implement this notification, specify a callback function to be called when your extension data changes. Pass the name of this callback function as a parameter to the HrCfgAdvise function. This monitoring mechanism uses polling to determine changes to extension data. You can set the polling interval in a parameter to the HrCfgCreateAdviseObj function. Because this polling uses a call to the IMAPIProp::GetProps method (which causes an RPC), it involves some network overhead. You can choose to have your application poll on demand by calling the HrCfgPollAdviseObj function.

The following procedure lists the events that occur when an administrator accesses an application-specific property page to view or change extension data.

    To change extension data
  1. The administrator double-clicks the application object in the Microsoft Exchange Server directory, which displays the property sheet for that object. The Microsoft Exchange Server Administrator program displays the first standard property page and the Administrator extension DLL displays the tabs representing extension-data property pages, if any.
  2. The administrator clicks a tab to open the property page containing the object's extension data. The Administrator program calls the extension DLL to display this property page.
  3. The extension DLL calls the Administrator extension functions, which in turn call configuration functions to unpack and display the extension data in the object's property pages.
  4. These property pages can now be edited. If the extension data is edited, it must be repacked (using configuration functions) before it is stored in the directory.

These and other related events are described in more detail in A Typical Call Sequence.