Esempio n. 1
0
 private void btnDisplay_Click(object sender, EventArgs e)
 {
     // TODO : Need to check list box is selected or not, if selected enable Display button
     if (LWlvResourceList.SelectedItems.Count == 1)
     {
         foreach (ListViewItem item in LWlvResourceList.SelectedItems)
         {
             string key = item.SubItems[2].Text;
             if (ResourceListTable != null && ResourceListTable.ContainsKey(key))
             {
                 RegResourceItem.FullResourceDescriptor frd = (RegResourceItem.FullResourceDescriptor)ResourceListTable[key];
                 if (frd != null)
                 {
                     DialogResult             dlg;
                     ResourceDescriptorDialog ResListDialog = new ResourceDescriptorDialog(frd);
                     dlg = ResListDialog.ShowDialog(this);
                 }
             }
         }
     }
     else
     {
         // None of the item is selected, do nothing.
         return;
     }
 }
Esempio n. 2
0
        private void SetInputData(RegResourceItem.FullResourceDescriptor frd)
        {
            IntTypeAnsLabel.Text = RegResourceItem.GetInterfaceString(frd.InterfaceType);
            BusNumAnsLabel.Text  = frd.BusNumber.ToString();

            foreach (RegResourceItem.PartialResourceDescriptor prd in frd.PartialResourceDescriptors)
            {
                string[]     listOfItems = null;
                ListViewItem lvItem      = null;
                switch (prd.Type)
                {
                case RegResourceItem.ResourceType.Dma:
                    break;

                case RegResourceItem.ResourceType.Interrupt:
                    listOfItems = new string[4];
                    RegResourceItem.HardwareResource.Interrupt hri = (RegResourceItem.HardwareResource.Interrupt)prd.Resource;
                    //Vector
                    listOfItems[0] = hri.Vector.ToString();
                    //Level
                    listOfItems[1] = hri.Level.ToString();
                    //Affinity
                    listOfItems[2] = "0x" + RegistryUtils.DecimalToBase(hri.Affinity, 16);
                    //Type
                    listOfItems[3] = "Level Sensitive";         // Need to check this can be hardcorded or not

                    lvItem = new ListViewItem(listOfItems);
                    LWlvInterrupt.Items.Add(lvItem);
                    break;

                case RegResourceItem.ResourceType.Memory:
                    listOfItems = new string[3];
                    RegResourceItem.HardwareResource.Memory hrm = (RegResourceItem.HardwareResource.Memory)prd.Resource;
                    //Physical Address
                    listOfItems[0] = "0x" + RegistryUtils.DecimalToBase(hrm.Start, 16);
                    //Length
                    listOfItems[1] = "0x" + RegistryUtils.DecimalToBase(hrm.Length, 16);
                    //Access
                    listOfItems[2] = "Unknown";         // How to get this ?

                    lvItem = new ListViewItem(listOfItems);
                    LWlvMemory.Items.Add(lvItem);
                    break;

                case RegResourceItem.ResourceType.Port:
                    listOfItems = new string[3];
                    RegResourceItem.HardwareResource.Port hrp = (RegResourceItem.HardwareResource.Port)prd.Resource;
                    //Physical Address
                    listOfItems[0] = "0x" + RegistryUtils.DecimalToBase(hrp.Start, 16);
                    //Length
                    listOfItems[1] = "0x" + RegistryUtils.DecimalToBase(hrp.Length, 16);
                    //Type
                    listOfItems[2] = "Port";         // How to get this ?

                    lvItem = new ListViewItem(listOfItems);
                    LWlvPort.Items.Add(lvItem);
                    break;

                case RegResourceItem.ResourceType.DeviceSpecific:
                    break;
                }
            }
        }
Esempio n. 3
0
 public ResourceDescriptorDialog(RegResourceItem.FullResourceDescriptor frd)
     : this()
 {
     Logger.Log("ResourceListDialog, Inside Constructor", Logger.RegistryViewerLoglevel);
     SetInputData(frd);
 }
Esempio n. 4
0
        unsafe private void ExtractResourceDescriptor(RegResourceItem.ResourceList resourceList, ref IntPtr p)
        {
            try
            {
                RegResourceItem.FULL_RESOURCE_DESCRIPTOR frd = new RegResourceItem.FULL_RESOURCE_DESCRIPTOR();
                Marshal.PtrToStructure(p, frd);
                p = (IntPtr)(p.ToInt32() + Marshal.SizeOf(frd));
                if (frd != null)
                {
                    RegResourceItem.FullResourceDescriptor fullResourceDescriptor = new RegResourceItem.FullResourceDescriptor(frd.InterfaceType, (int)frd.BusNumber);

                    for (int j = 0; j < frd.PartialResourceList.Count; j++)
                    {
                        RegResourceItem.PARTIAL_RESOURCE_DESCRIPTOR prd = new RegResourceItem.PARTIAL_RESOURCE_DESCRIPTOR();
                        Marshal.PtrToStructure(p, prd);

                        p = (IntPtr)(p.ToInt32() + (sizeof(byte) + sizeof(byte) + sizeof(ushort) + LargestStructSizeInUnion));

                        RegResourceItem.PartialResourceDescriptor partialResourceDescriptor = new RegResourceItem.PartialResourceDescriptor((RegResourceItem.ResourceType)prd.Type, prd.ShareDisposition, prd.Flags);

                        #region Parse Resource
                        switch ((RegResourceItem.ResourceType)prd.Type)
                        {
                        case RegResourceItem.ResourceType.Interrupt:
                        {
                            // Interrupt resource type
                            partialResourceDescriptor.Resource =
                                new RegResourceItem.HardwareResource.Interrupt(prd.Interrupt.Level, prd.Interrupt.Vector, prd.Interrupt.Affinity);
                            break;
                        }

                        case RegResourceItem.ResourceType.Memory:
                        {
                            // Memory resource type
                            partialResourceDescriptor.Resource =
                                new RegResourceItem.HardwareResource.Memory(prd.Memory.Start, prd.Memory.Length);
                            break;
                        }

                        case RegResourceItem.ResourceType.BusNumber:
                        {
                            // BusNumber resource type
                            partialResourceDescriptor.Resource =
                                new RegResourceItem.HardwareResource.BusNumber(prd.BusNumber.Start, prd.BusNumber.Length, prd.BusNumber.Reserved);
                            break;
                        }

                        case RegResourceItem.ResourceType.Dma:
                        {
                            // Dma resource type
                            partialResourceDescriptor.Resource =
                                new RegResourceItem.HardwareResource.Dma(prd.Dma.Channel, prd.Dma.Port, prd.Dma.Reserved1);
                            break;
                        }

                        case RegResourceItem.ResourceType.Null:
                        {
                            // Generic resource type
                            partialResourceDescriptor.Resource =
                                new RegResourceItem.HardwareResource.Generic(prd.Generic.Start, prd.Generic.Length);
                            break;
                        }

                        case RegResourceItem.ResourceType.Port:
                        {
                            // Port resource type
                            partialResourceDescriptor.Resource =
                                new RegResourceItem.HardwareResource.Port(prd.Port.Start, prd.Port.Length);
                            break;
                        }

                        case RegResourceItem.ResourceType.DevicePrivate:
                        {
                            // DevicePrivate resource type
                            partialResourceDescriptor.Resource =
                                new RegResourceItem.HardwareResource.DevicePrivate(prd.DevicePrivate.Data);
                            break;
                        }

                        case RegResourceItem.ResourceType.DeviceSpecific:
                        {
                            // DeviceSpecific resource type
                            partialResourceDescriptor.Resource =
                                new RegResourceItem.HardwareResource.DeviceSpecificData(prd.DeviceSpecificData.DataSize, prd.DeviceSpecificData.Reserved1, prd.DeviceSpecificData.Reserved2);
                            break;
                        }
                        }
                        #endregion

                        fullResourceDescriptor.PartialResourceDescriptors.Add(partialResourceDescriptor);
                    }

                    resourceList.FullResourceDescriptors.Add(fullResourceDescriptor);

                    string[] listOfItems = new string[3];
                    listOfItems[0] = ((int)frd.BusNumber).ToString();
                    string sInterface = RegResourceItem.GetInterfaceString(frd.InterfaceType);
                    listOfItems[1] = sInterface;
                    listOfItems[2] = frd.BusNumber.ToString() + sInterface;

                    if (ResourceListTable == null)
                    {
                        ResourceListTable = new Hashtable();
                        ResourceListTable.Add(listOfItems[2], fullResourceDescriptor);
                    }
                    else
                    {
                        ResourceListTable.Add(listOfItems[2], fullResourceDescriptor);
                    }

                    ListViewItem lvItem = new ListViewItem(listOfItems);
                    LWlvResourceList.Items.Add(lvItem);
                }
            }
            finally
            {
            }
        }
        unsafe private void ExtractResourceDescriptor(RegResourceItem.ResourceList resourceList, ref IntPtr p)
        {
            try
            {
                RegResourceItem.FULL_RESOURCE_DESCRIPTOR frd = new RegResourceItem.FULL_RESOURCE_DESCRIPTOR();
                Marshal.PtrToStructure(p, frd);
                p = (IntPtr)(p.ToInt32() + Marshal.SizeOf(frd));
                if (frd != null)
                {
                    RegResourceItem.FullResourceDescriptor fullResourceDescriptor = new RegResourceItem.FullResourceDescriptor(frd.InterfaceType, (int)frd.BusNumber);

                    for (int j = 0; j < frd.PartialResourceList.Count; j++)
                    {
                        RegResourceItem.PARTIAL_RESOURCE_DESCRIPTOR prd = new RegResourceItem.PARTIAL_RESOURCE_DESCRIPTOR();
                        Marshal.PtrToStructure(p, prd);

                        p = (IntPtr)(p.ToInt32() + (sizeof(byte) + sizeof(byte) + sizeof(ushort) + LargestStructSizeInUnion));

                        RegResourceItem.PartialResourceDescriptor partialResourceDescriptor = new RegResourceItem.PartialResourceDescriptor((RegResourceItem.ResourceType)prd.Type, prd.ShareDisposition, prd.Flags);

                        #region Parse Resource
                        switch ((RegResourceItem.ResourceType)prd.Type)
                        {
                            case RegResourceItem.ResourceType.Interrupt:
                                {
                                    // Interrupt resource type
                                    partialResourceDescriptor.Resource =
                                        new RegResourceItem.HardwareResource.Interrupt(prd.Interrupt.Level, prd.Interrupt.Vector, prd.Interrupt.Affinity);
                                    break;
                                }

                            case RegResourceItem.ResourceType.Memory:
                                {
                                    // Memory resource type
                                    partialResourceDescriptor.Resource =
                                        new RegResourceItem.HardwareResource.Memory(prd.Memory.Start, prd.Memory.Length);
                                    break;
                                }

                            case RegResourceItem.ResourceType.BusNumber:
                                {
                                    // BusNumber resource type
                                    partialResourceDescriptor.Resource =
                                        new RegResourceItem.HardwareResource.BusNumber(prd.BusNumber.Start, prd.BusNumber.Length, prd.BusNumber.Reserved);
                                    break;
                                }

                            case RegResourceItem.ResourceType.Dma:
                                {
                                    // Dma resource type
                                    partialResourceDescriptor.Resource =
                                        new RegResourceItem.HardwareResource.Dma(prd.Dma.Channel, prd.Dma.Port, prd.Dma.Reserved1);
                                    break;
                                }

                            case RegResourceItem.ResourceType.Null:
                                {
                                    // Generic resource type
                                    partialResourceDescriptor.Resource =
                                        new RegResourceItem.HardwareResource.Generic(prd.Generic.Start, prd.Generic.Length);
                                    break;
                                }

                            case RegResourceItem.ResourceType.Port:
                                {
                                    // Port resource type
                                    partialResourceDescriptor.Resource =
                                        new RegResourceItem.HardwareResource.Port(prd.Port.Start, prd.Port.Length);
                                    break;
                                }

                            case RegResourceItem.ResourceType.DevicePrivate:
                                {
                                    // DevicePrivate resource type
                                    partialResourceDescriptor.Resource =
                                        new RegResourceItem.HardwareResource.DevicePrivate(prd.DevicePrivate.Data);
                                    break;
                                }

                            case RegResourceItem.ResourceType.DeviceSpecific:
                                {
                                    // DeviceSpecific resource type
                                    partialResourceDescriptor.Resource =
                                        new RegResourceItem.HardwareResource.DeviceSpecificData(prd.DeviceSpecificData.DataSize, prd.DeviceSpecificData.Reserved1, prd.DeviceSpecificData.Reserved2);
                                    break;
                                }
                        }
                        #endregion

                        fullResourceDescriptor.PartialResourceDescriptors.Add(partialResourceDescriptor);
                    }

                    resourceList.FullResourceDescriptors.Add(fullResourceDescriptor);

                    string[] listOfItems = new string[3];
                    listOfItems[0] = ((int)frd.BusNumber).ToString();
                    string sInterface = RegResourceItem.GetInterfaceString(frd.InterfaceType);
                    listOfItems[1] = sInterface;
                    listOfItems[2] = frd.BusNumber.ToString() + sInterface;

                    if (ResourceListTable == null)
                    {
                        ResourceListTable = new Hashtable();
                        ResourceListTable.Add(listOfItems[2], fullResourceDescriptor);
                    }
                    else
                        ResourceListTable.Add(listOfItems[2], fullResourceDescriptor);

                    ListViewItem lvItem = new ListViewItem(listOfItems);
                    LWlvResourceList.Items.Add(lvItem);
                }
            }
            finally
            {
            }
        }