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 { } }
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 { } }