/// <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;
            }
        }
Beispiel #2
0
        /// <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;
            }
        }