[DllImport("aygshell.dll", CharSet = CharSet.Unicode)]
static unsafe extern CONFIG_E DMProcessConfigXML(string pszWXMLin, CFGFlags dwFlags, out char * ppszwXMLout);
[DllImport("coredll.dll", EntryPoint = "??_V@YAXPAXABUnothrow_t@std@@@Z")]
static extern void DeleteArray(IntPtr ptr, IntPtr junk);
public static CONFIG_E DMProcessConfigXML(
string xml, CFGFlags flags, out string resultXml) {
CONFIG_E result;
unsafe {
char* xmlOutPointer;
result = DMProcessConfigXML(xml, flags, out xmlOutPointer);
resultXml = new string(xmlOutPointer);
DeleteArray((IntPtr)xmlOutPointer, IntPtr.Zero);
}
return result;
}
!!!!User-Defined Types:
public enum CFGFlags : uint {
Process = 0x0001,
Metadata = 0x0002,
}
public enum CONFIG_E : uint {
Ok = 0x00000000,
ObjectBusy = 0x80042001,
CancelTimeout = 0x80042002,
EntryNotFound = 0x80042004,
ProcessingCanceled = 0x00042005,
CspException = 0x80042007,
TransactioningFailure = 0x80042008,
BadXml = 0x80042009,
}
!!!!Alternative Managed API:
Microsoft.SmartDevice.Connectivity.Device.ProvisionDevice(string, Device.ConfigActions), although
it is a desktop managed method and only works remotely, whereas this P/Invoke can be executed directly
on the device.
!!!!Notes:
None.
!!!!Tips & Tricks:
Please add some!
!!!!Sample Code:
Please add some!
Documentation: DMProcessConfigXML@msdn on MSDN