Changeset 167


Ignore:
Timestamp:
02/05/10 06:01:18 (14 years ago)
Author:
tim
Message:

added more regfi API documentation
minor consistency change

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/regfi.h

    r166 r167  
    159159#define REGFI_NK_FLAG_UNKNOWN2     0x1000
    160160
    161 /* This next one shows up on root keys in some Vista "software" registries */
     161/* This next one shows up in some Vista "software" registries */
     162/* XXX: This shows up in the following two SOFTWARE keys in Vista:
     163 *   /Wow6432Node/Microsoft
     164 *   /Wow6432Node/Microsoft/Cryptography
     165 * 
     166 * It comes along with UNKNOWN2 and ASCIINAME for a total flags value of 0x10A0
     167 */
    162168#define REGFI_NK_FLAG_UNKNOWN3     0x0080
    163169
     
    201207                                    | REGFI_NK_FLAG_VOLATILE\
    202208                                    | REGFI_NK_FLAG_UNKNOWN1\
    203                                     | REGFI_NK_FLAG_UNKNOWN2)
     209                                    | REGFI_NK_FLAG_UNKNOWN2\
     210                                    | REGFI_NK_FLAG_UNKNOWN3)
    204211
    205212/* HBIN block */
     
    720727
    721728/* regfi_iterator_first_subkey: Sets the internal subkey index to the first
    722  *                              subkey referenced by the current key.
    723  *
    724  * Arguments:
    725  *   i            -- the iterator
    726  *
    727  * Returns:
    728  *   A read-only key structure for the newly referenced first subkey,
    729  *   or NULL on failure.  Failure may be due to a lack of any subkeys or other
    730  *   errors.
     729 *                              subkey referenced by the current key and returns
     730 *                              that key.
     731 *
     732 * Arguments:
     733 *   i            -- the iterator
     734 *
     735 * Returns:
     736 *   A newly allocated key structure for the newly referenced first subkey, or
     737 *   NULL on failure.  Failure may be due to a lack of any subkeys or other
     738 *   errors.  Newly allocated keys must be freed with regfi_free_key.
    731739 */
    732740REGFI_NK_REC*         regfi_iterator_first_subkey(REGFI_ITERATOR* i);
     
    744752 */
    745753REGFI_NK_REC*         regfi_iterator_cur_subkey(REGFI_ITERATOR* i);
     754
     755
     756/* regfi_iterator_next_subkey: Increments the internal subkey index to the next
     757 *                             key in the subkey-list and returns the subkey
     758 *                             for that index.
     759 *
     760 * Arguments:
     761 *   i            -- the iterator
     762 *
     763 * Returns:
     764 *   A newly allocated key structure for the next subkey or NULL on
     765 *   failure.  Newly allocated keys must be freed with
     766 *   regfi_free_key.
     767 */
    746768REGFI_NK_REC*         regfi_iterator_next_subkey(REGFI_ITERATOR* i);
     769
     770
     771/* regfi_iterator_find_subkey: Searches for a subkey with a given name under the
     772 *                             current key.
     773 *
     774 * Arguments:
     775 *   i            -- the iterator
     776 *   subkey_name  -- subkey name to search for
     777 *
     778 * Returns:
     779 *   True if such a subkey was found, false otherwise.  If a subkey is found,
     780 *   the current subkey index is set to that subkey.  Otherwise, the subkey
     781 *   index remains at the same location as before the call.
     782 */
    747783bool                  regfi_iterator_find_subkey(REGFI_ITERATOR* i,
    748784                                                 const char* subkey_name);
    749785
     786/* regfi_iterator_first_value: Sets the internal value index to the first
     787 *                             value referenced by the current key and returns
     788 *                             that value.
     789 *
     790 * Arguments:
     791 *   i            -- the iterator
     792 *
     793 * Returns:
     794 *   A newly allocated value structure for the newly referenced first value,
     795 *   or NULL on failure.  Failure may be due to a lack of any values or other
     796 *   errors.  Newly allocated keys must be freed with regfi_free_value.
     797 */
    750798REGFI_VK_REC*         regfi_iterator_first_value(REGFI_ITERATOR* i);
     799
     800
     801/* regfi_iterator_cur_value: Returns the currently indexed value.
     802 *
     803 * Arguments:
     804 *   i            -- the iterator
     805 *
     806 * Returns:
     807 *   A newly allocated value structure for the currently referenced value,
     808 *   or NULL on failure.  Newly allocated values must be freed with
     809 *   regfi_free_value.
     810 */
    751811REGFI_VK_REC*         regfi_iterator_cur_value(REGFI_ITERATOR* i);
     812
     813
     814/* regfi_iterator_next_value: Increments the internal value index to the next
     815 *                            value in the value-list and returns the value
     816 *                            for that index.
     817 *
     818 * Arguments:
     819 *   i            -- the iterator
     820 *
     821 * Returns:
     822 *   A newly allocated key structure for the next value or NULL on failure.
     823 *   Newly allocated keys must be freed with regfi_free_value.
     824 */
    752825REGFI_VK_REC*         regfi_iterator_next_value(REGFI_ITERATOR* i);
     826
     827
     828/* regfi_iterator_find_value: Searches for a value with a given name under the
     829 *                            current key.
     830 *
     831 * Arguments:
     832 *   i            -- the iterator
     833 *   value_name   -- value name to search for
     834 *
     835 * Returns:
     836 *   True if such a value was found, false otherwise.  If a value is found,
     837 *   the current value index is set to that value.  Otherwise, the value
     838 *   index remains at the same location as before the call.
     839 */
    753840bool                  regfi_iterator_find_value(REGFI_ITERATOR* i,
    754841                                                const char* value_name);
    755842
     843
     844/* regfi_iterator_fetch_classname: Retrieves classname for a given key.
     845 *
     846 * Arguments:
     847 *   i            -- the iterator
     848 *   key          -- the key whose classname is desired
     849 *
     850 * Returns:
     851 *   Returns a newly allocated classname structure, or NULL on failure.
     852 *   Classname structures must be freed with regfi_free_classname.
     853 */
    756854REGFI_CLASSNAME*      regfi_iterator_fetch_classname(REGFI_ITERATOR* i,
    757855                                                     const REGFI_NK_REC* key);
     856
     857
     858/* regfi_iterator_fetch_data: Retrieves data for a given value.
     859 *
     860 * Arguments:
     861 *   i            -- the iterator
     862 *   value        -- the value whose data is desired
     863 *
     864 * Returns:
     865 *   Returns a newly allocated data structure, or NULL on failure.
     866 *   Data structures must be freed with regfi_free_data.
     867 */
    758868REGFI_DATA*           regfi_iterator_fetch_data(REGFI_ITERATOR* i,
    759869                                                const REGFI_VK_REC* value);
  • trunk/lib/regfi.c

    r166 r167  
    13831383{
    13841384  if(file->last_message != NULL)
    1385     free(last_message);
     1385    free(file->last_message);
    13861386
    13871387  talloc_free(file);
     
    17081708  REGFI_VK_REC* cur;
    17091709  bool found = false;
     1710  uint32 old_value = i->cur_value;
    17101711
    17111712  /* XXX: cur->valuename can be NULL in the registry. 
     
    17271728    }
    17281729  }
    1729 
    1730   return found;
     1730 
     1731  if(found == false)
     1732  {
     1733    i->cur_value = old_value;
     1734    return false;
     1735  }
     1736
     1737  regfi_free_value(cur);
     1738  return true;
    17311739}
    17321740
Note: See TracChangeset for help on using the changeset viewer.