Difference between revisions of "Truxton child file get accessed"

From truxwiki.com
Jump to navigation Jump to search
Line 16: Line 16:
 
=Sample=
 
=Sample=
 
<source lang="C" highlight="35">
 
<source 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;
 
   FILETIME now;
  
   GetSystemTimePreciseAsFileTime(&now);
+
   GetSystemTimePreciseAsFileTime( &now );
  
 
   ULARGE_INTEGER ticks;
 
   ULARGE_INTEGER ticks;
Line 38: Line 38:
 
   ticks.HighPart = now.dwHighDateTime;
 
   ticks.HighPart = now.dwHighDateTime;
  
   truxton_child_file_set_created(child, ticks.QuadPart);
+
   truxton_child_file_set_created( child, ticks.QuadPart );
   truxton_child_file_set_accessed(child, ticks.QuadPart);
+
   truxton_child_file_set_accessed( child, ticks.QuadPart );
   truxton_child_file_set_modified(child, ticks.QuadPart);
+
   truxton_child_file_set_modified( child, ticks.QuadPart );
  
   truxton_child_file_set_origin(child, ORIGIN_GENERATED);
+
   truxton_child_file_set_origin( child, ORIGIN_GENERATED );
  
   if ( truxton_child_file_save(child) == 0 )
+
   if ( truxton_child_file_save( child ) = 0 )
 
   {
 
   {
 
       printf( "Failed to add child to Truxton\n" );
 
       printf( "Failed to add child to Truxton\n" );
Line 50: Line 50:
 
   else
 
   else
 
   {
 
   {
       ticks.QuadPart = truxton_child_file_get_accessed(child_file);
+
       ticks.QuadPart = truxton_child_file_get_accessed( child_file );
 
       printf( "Tick count is %" PRIu64 "\n", ticks.QuadPart );
 
       printf( "Tick count is %" PRIu64 "\n", ticks.QuadPart );
 
   }
 
   }
  
   truxton_child_file_destroy(child);
+
   truxton_child_file_destroy( child );
 
}
 
}
 
</source>
 
</source>

Revision as of 03:42, 13 February 2021

This retrieves the last access date of the file. This corresponds to the [LastAccess] column of the [File] table.

Syntax

uint64_t truxton_child_file_get_accessed( uint64_t child_handle );

Parameters

child_handle

The handle created by the truxton_child_file_create or truxton_file_create_child call.

Return value

The last access date of the file in FILETIME ticks.

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" );

   FILETIME now;

   GetSystemTimePreciseAsFileTime( &now );

   ULARGE_INTEGER ticks;

   ticks.LowPart = now.dwLowDateTime;
   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" );
   }
   else
   {
      ticks.QuadPart = truxton_child_file_get_accessed( child_file );
      printf( "Tick count is %" PRIu64 "\n", ticks.QuadPart );
   }

   truxton_child_file_destroy( child );
}

Note, the PRIu64 in the sample code above is the new standard way of formatting a 64-bit 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.