Example #1
0
        protected override Array rawDataToStructArray(ref byte[] rawData)
        {
            if (rawData == null)
            {
                return(new DEREFERENCED_HOOK_CALL[0]);
            }

            // Create our result array
            uint size = (this.lengthParams + 3 * 4 + this.copySize);

            DEREFERENCED_HOOK_CALL[] result = new DEREFERENCED_HOOK_CALL[rawData.Length / size];
            for (int i = 0; i < result.Length; i++)
            {
                result[i].caller = oMemoryFunctions.byteArrayToUint(rawData, (int)(i * size));

                // Copy over the arguments
                result[i].arguments = new uint[this.lengthParams / 4];
                for (int n = 0; n < this.lengthParams / 4; n++)
                {
                    result[i].arguments[n] = oMemoryFunctions.byteArrayToUint(rawData, (int)(i * size + 4 + n * 4));
                }
                result[i].sequenceNumber = oMemoryFunctions.byteArrayToUint(rawData, (int)(i * size + 4 + this.lengthParams));

                // Copy the array
                result[i].dereference = new byte[this.copySize];
                Array.ConstrainedCopy(rawData, (int)(i * size + 8 + this.lengthParams), result[i].dereference, 0, (int)this.copySize);

                result[i].returnValue = oMemoryFunctions.byteArrayToUint(rawData, (int)(i * size + this.copySize + 8 + this.lengthParams));
            }


            return(result);
        }
        protected override Array rawDataToStructArray(ref byte[] rawData)
        {
            if (rawData == null)
                return new DEREFERENCED_HOOK_CALL[0];

            // Create our result array
            uint size = (this.lengthParams + 3 * 4 + this.copySize);
            DEREFERENCED_HOOK_CALL[] result = new DEREFERENCED_HOOK_CALL[rawData.Length / size];
            for (int i = 0; i < result.Length; i++)
            {
                result[i].caller = oMemoryFunctions.byteArrayToUint(rawData, (int)(i * size));

                // Copy over the arguments
                result[i].arguments = new uint[this.lengthParams / 4];
                for (int n = 0; n < this.lengthParams / 4; n++)
                {
                    result[i].arguments[n] = oMemoryFunctions.byteArrayToUint(rawData, (int)(i * size + 4 + n * 4));
                }
                result[i].sequenceNumber = oMemoryFunctions.byteArrayToUint(rawData, (int)(i * size + 4 + this.lengthParams));

                // Copy the array
                result[i].dereference = new byte[this.copySize];
                Array.ConstrainedCopy(rawData, (int)(i * size + 8 + this.lengthParams),result[i].dereference, 0,(int) this.copySize);

                result[i].returnValue = oMemoryFunctions.byteArrayToUint(rawData, (int)(i * size + this.copySize + 8 + this.lengthParams));
            }

            return result;
        }