I have documented my PHP solution. It's brand new and works, but no doubt I'll be improving and expanding it as time goes by. Notice my last code example is "Search for contacts that match a certain criteria". This example is close to what you want to do. Although my code is PHP, the actual WebDAV XML query is the same as you need--and that's the trickiest part of WebDAV. http://www.troywolf.com/articles/php/exchange_webdav_examples.php
' Create Outlook application.
Dim oApp As Outlook.Application = New Outlook.Application
' Get namespace and Contacts folder reference.
Dim oNS As Outlook.NameSpace = oApp.GetNamespace("MAPI")
'Set MAPI folder to a location
Dim cContacts As Outlook.MAPIFolder = oNS.Folders("Public Folders").Folders("All Public Folders").Folders("Contacts")
' Dim collection
Dim oItems As Outlook.Items = cContacts.Items
Dim i As Int16 = 0
For Each item In oItems
Dim oCt As Outlook.ContactItem
oCt = item
Console.WriteLine(i.ToString + " - " + oCt.FullName)
i = i + 1
'Need to release Oct because it craps out at 247 records with the following error
'Your server administrator has limited the number of items you can open simultaneously.
'Try closing messages you have opened or removing attachments and images from unsent
'messages you are composing
Catch ex As ExecutionEngineException