private ImageTlsCallback[] ParseTlsCallbacks(ulong addressOfCallBacks)
        {
            var callbacks             = new List <ImageTlsCallback>();
            var rawAddressOfCallbacks = (uint)addressOfCallBacks.VaToOffset(_sectionsHeaders);

            uint count = 0;

            while (true)
            {
                if (_is64Bit)
                {
                    var cb = new ImageTlsCallback(PeFile, rawAddressOfCallbacks + count * 8, _is64Bit);
                    if (cb.Callback == 0)
                    {
                        break;
                    }

                    callbacks.Add(cb);
                    count++;
                }
                else
                {
                    var cb = new ImageTlsCallback(PeFile, rawAddressOfCallbacks + count * 4, _is64Bit);
                    if (cb.Callback == 0)
                    {
                        break;
                    }

                    callbacks.Add(cb);
                    count++;
                }
            }

            return(callbacks.ToArray());
        }
        public void ImageTlsCallback32ConstructorWorks_Test()
        {
            var tlsCallback = new ImageTlsCallback(new BufferFile(RawStructures.RawTlsCallback32), 2, false);

            Assert.Equal((ulong)0x33221100, tlsCallback.Callback);
        }
        public void ImageTlsCallback64ConstructorWorks_Test()
        {
            var tlsCallback = new ImageTlsCallback(new BufferFile(RawStructures.RawTlsCallback64), 2, true);

            Assert.Equal((ulong)0x7766554433221100, tlsCallback.Callback);
        }