/// <summary> /// Parse RESOURCE_CHANGE from RESP_ASYNC_NOTIFY. /// </summary> /// <param name="respNotify">A pointer to a PRESP_ASYNC_NOTIFY structure, as specified in section 2.2.1.7.</param> /// <param name="resourceChangeList">RESOURCE_CHANGE list.</param> public static void ParseResourceChange(RESP_ASYNC_NOTIFY respNotify, out RESOURCE_CHANGE[] resourceChangeList) { resourceChangeList = new RESOURCE_CHANGE[respNotify.NumberOfMessages]; int len = 0; for (int i = 0; i < respNotify.NumberOfMessages; i++) { resourceChangeList[i] = new RESOURCE_CHANGE(); resourceChangeList[i].Length = BitConverter.ToUInt32(respNotify.MessageBuffer, len); resourceChangeList[i].ChangeType = BitConverter.ToUInt32(respNotify.MessageBuffer, len + sizeof(int)); resourceChangeList[i].ResourceName = Encoding.Unicode.GetString(respNotify.MessageBuffer, len + 2 * sizeof(int), (int)(resourceChangeList[i].Length - 2 * sizeof(int))); len += (int)resourceChangeList[i].Length; } }
/// <summary> /// Parse RESOURCE_CHANGE from RESP_ASYNC_NOTIFY. /// </summary> /// <param name="respNotify">A pointer to a PRESP_ASYNC_NOTIFY structure, as specified in section 2.2.1.7.</param> /// <param name="resourceChangeList">RESOURCE_CHANGE list.</param> public static void ParseResourceChange(RESP_ASYNC_NOTIFY respNotify, out RESOURCE_CHANGE[] resourceChangeList) { resourceChangeList = new RESOURCE_CHANGE[respNotify.NumberOfMessages]; int len = 0; for (int i = 0; i < respNotify.NumberOfMessages; i++) { resourceChangeList[i] = new RESOURCE_CHANGE(); resourceChangeList[i].Length = BitConverter.ToUInt32(respNotify.MessageBuffer, len); resourceChangeList[i].ChangeType = BitConverter.ToUInt32(respNotify.MessageBuffer, len + sizeof(int)); resourceChangeList[i].ResourceName = Encoding.Unicode.GetString(respNotify.MessageBuffer, len + 2 * sizeof(int), (int)(resourceChangeList[i].Length - 2 * sizeof(int))); len += (int)resourceChangeList[i].Length; } }