コード例 #1
0
        unsafe private void SetInputData()
        {
            Logger.Log("ResourceListDialog.SetInputData", Logger.RegistryViewerLoglevel);

            string[] sKey = null;
            object   data = null;

            if (ValueInfo != null)
            {
                sKey = ValueInfo.sParentKey.ToString().Split(new char[] { '\\' }, 2);
                data = RegistryInteropWrapperWindows.RegGetValue(RegistryInteropWrapperWindows.GetRegistryHive(ValueInfo.hKey), sKey[1], ValueInfo.sValue, out ValueInfo.intDataType);
            }
            else
            {
                sKey = regValueInfo.sKeyname.ToString().Split(new char[] { '\\' }, 2);
                data = regValueInfo.bDataBuf;
            }

            if (data == null)
            {
                Logger.Log("ResourceListDialog.SetInputData - RegistryKey.GetValue returns null", Logger.RegistryViewerLoglevel);
                return;
            }

            try
            {
                int    RESOURCE_LIST            = 8;
                int    FULL_RESOURCE_DESCRIPTOR = 9;
                byte[] buffer = data as byte[];
                RegResourceItem.ResourceList resourceList = null;
                fixed(byte *pBuffer = buffer)
                {
                    IntPtr p = (IntPtr)pBuffer;

                    resourceList = new RegResourceItem.ResourceList();
                    if ((ValueInfo != null && ValueInfo.intDataType == RESOURCE_LIST) ||
                        (regValueInfo != null && (int)regValueInfo.pType == RESOURCE_LIST))
                    {
                        RegResourceItem.RESOURCE_LIST_COUNT rCount = new RegResourceItem.RESOURCE_LIST_COUNT();
                        Marshal.PtrToStructure(p, rCount);
                        p = (IntPtr)(p.ToInt32() + Marshal.SizeOf(rCount));
                        for (int i = 0; i < rCount.Count; i++)
                        {
                            ExtractResourceDescriptor(resourceList, ref p);
                        }
                    }
                    else if ((ValueInfo != null && ValueInfo.intDataType == FULL_RESOURCE_DESCRIPTOR) ||
                             (regValueInfo != null && (int)regValueInfo.pType == FULL_RESOURCE_DESCRIPTOR))
                    {
                        ExtractResourceDescriptor(resourceList, ref p);
                    }
                }

                if (LWlvResourceList.Items.Count > 0)
                {
                    btnDisplay.Enabled = true;
                }
            }
            finally
            {
            }
        }
コード例 #2
0
        unsafe private void SetInputData()
        {
            Logger.Log("ResourceListDialog.SetInputData", Logger.RegistryViewerLoglevel);

            string[] sKey = null;
            object data = null;

            if (ValueInfo != null)
            {
                sKey = ValueInfo.sParentKey.ToString().Split(new char[] { '\\' } , 2);
                data = RegistryInteropWrapperWindows.RegGetValue(RegistryInteropWrapperWindows.GetRegistryHive(ValueInfo.hKey), sKey[1], ValueInfo.sValue, out ValueInfo.intDataType);
            }
            else
            {
                sKey = regValueInfo.sKeyname.ToString().Split(new char[] { '\\' } , 2);
                data = regValueInfo.bDataBuf;
            }

            if (data == null)
            {
                Logger.Log("ResourceListDialog.SetInputData - RegistryKey.GetValue returns null", Logger.RegistryViewerLoglevel);
                return;
            }

            try
            {
                int RESOURCE_LIST = 8;
                int FULL_RESOURCE_DESCRIPTOR = 9;
                byte[] buffer = data as byte[];
                RegResourceItem.ResourceList resourceList = null;
                fixed (byte* pBuffer = buffer)
                {
                    IntPtr p = (IntPtr)pBuffer;
                    resourceList = new RegResourceItem.ResourceList();
                    if ((ValueInfo != null && ValueInfo.intDataType == RESOURCE_LIST) ||
                        (regValueInfo != null && (int)regValueInfo.pType == RESOURCE_LIST))
                    {
                        RegResourceItem.RESOURCE_LIST_COUNT rCount = new RegResourceItem.RESOURCE_LIST_COUNT();
                        Marshal.PtrToStructure(p, rCount);
                        p = (IntPtr)(p.ToInt32() + Marshal.SizeOf(rCount));
                        for (int i = 0; i < rCount.Count; i++)
                        {
                            ExtractResourceDescriptor(resourceList, ref p);
                        }
                    }
                    else if ((ValueInfo != null && ValueInfo.intDataType == FULL_RESOURCE_DESCRIPTOR) ||
                        (regValueInfo != null && (int)regValueInfo.pType == FULL_RESOURCE_DESCRIPTOR))
                    {
                        ExtractResourceDescriptor(resourceList, ref p);
                    }
                }

                if (LWlvResourceList.Items.Count > 0)
                    btnDisplay.Enabled = true;
            }
            finally
            {
            }
        }