Difference between revisions of "Truxton child file get attributes"

From truxwiki.com
Jump to navigation Jump to search
(Created page with "This retrieves the attributes of the child file. =Syntax= <syntaxhighlight lang="C"> uint64_t truxton_child_file_get_attributes( uint64_t child_handle ); </syntaxhighlight>...")
 
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
This retrieves the attributes of the child file.
 
This retrieves the attributes of the child file.
 +
This corresponds to the <code>[Attributes]</code> column of the <code><nowiki>[</nowiki>[[File Table|File]]<nowiki>]</nowiki></code> table.
  
 
=Syntax=
 
=Syntax=
<syntaxhighlight lang="C">
+
<source lang="C">
 
uint64_t truxton_child_file_get_attributes( uint64_t child_handle );
 
uint64_t truxton_child_file_get_attributes( uint64_t child_handle );
</syntaxhighlight>
+
</source>
  
 
=Parameters=
 
=Parameters=
 
==<code>child_handle</code>==
 
==<code>child_handle</code>==
 
 
The handle created by the [[truxton_child_file_create]] or [[truxton_file_create_child]] call.
 
The handle created by the [[truxton_child_file_create]] or [[truxton_file_create_child]] call.
  
 
=Return=
 
=Return=
 
 
The attributes of the file.
 
The attributes of the file.
 +
For a Microsoft filesystem, it will return a combination of the [https://docs.microsoft.com/en-us/windows/win32/fileio/file-attribute-constants file attribute flags.]
  
 
=Sample=
 
=Sample=
 
+
<source lang="C" highlight="28">
<syntaxhighlight lang="C" highlight="35">
+
void add_folder( uint64_t truxton, uint64_t parent_file )
void add_folder(uint64_t truxton, uint64_t parent_file)
 
 
{
 
{
   truxton_start_adding_files(truxton);
+
   truxton_start_adding_files( truxton );
  
   uint64_t child = truxton_child_file_create(truxton);
+
   uint64_t child = truxton_child_file_create( truxton );
  
 
   char id[40];
 
   char id[40];
  
   truxton_file_get_id(parent_file, id, sizeof(id));
+
   truxton_file_get_id( parent_file, id, sizeof(id) );
   truxton_child_file_set_parent_id(child, id);
+
   truxton_child_file_set_parent_id( child, id );
   truxton_child_file_set_type(child, Type_Directory);
+
   truxton_child_file_set_type( child, Type_Directory );
   truxton_child_file_set_name(child, "Custom Exploits Folder");
+
   truxton_child_file_set_name( child, "Custom Exploits Folder" );
  
   FILETIME now;
+
   uint64_t now = truxton_time_now();
  
   GetSystemTimeAsFileTime(&now);
+
   truxton_child_file_set_created( child, now );
 +
  truxton_child_file_set_accessed( child, now );
 +
  truxton_child_file_set_modified( child, now );
  
   ULARGE_INTEGER ticks;
+
   truxton_child_file_set_origin( child, ORIGIN_GENERATED );
  
  ticks.LowPart = now.dwLowDateTime;
+
   if ( truxton_child_file_save( child ) == 0 )
  ticks.HighPart = now.dwHighDateTime;
 
 
 
  truxton_child_file_set_created(child, ticks.QuadPart);
 
  truxton_child_file_set_accessed(child, ticks.QuadPart);
 
  truxton_child_file_set_modified(child, ticks.QuadPart);
 
 
 
  truxton_child_file_set_origin(child, ORIGIN_GENERATED);
 
 
 
   if ( truxton_child_file_save(child) == 0 )
 
 
   {
 
   {
 
       printf( "Failed to add child to Truxton\n" );
 
       printf( "Failed to add child to Truxton\n" );
Line 52: Line 44:
 
   else
 
   else
 
   {
 
   {
       uint64_t count = truxton_child_file_get_attributes(child_file);
+
       uint64_t attributes = truxton_child_file_get_attributes( child_file );
       printf( "Atrributes is %d\n", count );
+
       printf( "Atrributes is %" PRIu64 "\n", attributes );
 
   }
 
   }
  
   truxton_child_file_destroy(child);
+
   truxton_child_file_destroy( child );
 
}
 
}
</syntaxhighlight>
+
</source>
 +
 
 +
The <code>PRIu64</code> in the sample code above is a standard way of [https://en.wikipedia.org/wiki/C_data_types#Printf_and_scanf_format_specifiers formatting] a 64-bit unsigned integer in C.
 +
Over the years, different compilers on different operating systems used different format specifiers for things, these <code>PRI</code> macros, along with some tricky string concatenation the compilers perform for you, allow you to maintain a single code base without a bunch of macro magic.

Latest revision as of 03:01, 14 April 2024

This retrieves the attributes of the child file. This corresponds to the [Attributes] column of the [File] table.

Syntax

uint64_t truxton_child_file_get_attributes( uint64_t child_handle );

Parameters

child_handle

The handle created by the truxton_child_file_create or truxton_file_create_child call.

Return

The attributes of the file. For a Microsoft filesystem, it will return a combination of the file attribute flags.

Sample

void add_folder( uint64_t truxton, uint64_t parent_file )
{
   truxton_start_adding_files( truxton );

   uint64_t child = truxton_child_file_create( truxton );

   char id[40];

   truxton_file_get_id( parent_file, id, sizeof(id) );
   truxton_child_file_set_parent_id( child, id );
   truxton_child_file_set_type( child, Type_Directory );
   truxton_child_file_set_name( child, "Custom Exploits Folder" );

   uint64_t now = truxton_time_now();

   truxton_child_file_set_created( child, now );
   truxton_child_file_set_accessed( child, now );
   truxton_child_file_set_modified( child, now );

   truxton_child_file_set_origin( child, ORIGIN_GENERATED );

   if ( truxton_child_file_save( child ) == 0 )
   {
      printf( "Failed to add child to Truxton\n" );
   }
   else
   {
      uint64_t attributes = truxton_child_file_get_attributes( child_file );
      printf( "Atrributes is %" PRIu64 "\n", attributes );
   }

   truxton_child_file_destroy( child );
}

The PRIu64 in the sample code above is a standard way of formatting a 64-bit unsigned integer in C. Over the years, different compilers on different operating systems used different format specifiers for things, these PRI macros, along with some tricky string concatenation the compilers perform for you, allow you to maintain a single code base without a bunch of macro magic.