c++ - Finding cluster info of a file -


i've been trying find information on file using createfile() , deviceiocontrol(). keep running error_handle_eof understanding means starting virtual cluster number past end of file though starting @ 0. here few snippets of code, let me know if guys have idea what's going wrong.

handle hfile = invalid_handle_value; //drive or file checked      lpwstr txtfile = l"text.txt"; //text file     hfile = createfile(txtfile,                         //target file                        generic_read | generic_write,    //read , write                        file_share_read|file_share_write,//allows sharing of read , writes                        null,                            //security prevents child process inheriting handle                        open_existing,                   //open file or drive if exist                         file_attribute_normal,           //default settings files                        null);                           //template file generiv read access rights      if (hfile == invalid_handle_value)  //error handling     {         cout<<"file not exist"<<endl;         closehandle (hfile);         system("pause");     }     cout<<"you opened file succesfully: "<<hfile<<endl;      starting_vcn_input_buffer startvcn;     retrieval_pointers_buffer retrievalbuffer;     dword error =error_more_data;      bool returns;     startvcn.startingvcn.quadpart = 0;      while( error ==error_more_data){          dword bytesreturned;      returns = deviceiocontrol(hfile,             fsctl_get_retrieval_pointers,             &startvcn,             sizeof(starting_vcn_input_buffer),             &retrievalbuffer,             sizeof(retrieval_pointers_buffer),             &bytesreturned,             null);     error = getlasterror();      switch(error){      case error_handle_eof:         cout<<"error_handle_eof"<<endl;         returns = true;         break;      case error_more_data:         cout<<"error_more_data"<<endl;         startvcn.startingvcn = retrievalbuffer.extents[0].nextvcn;      case no_error:         cout<<"no_error, here info: "<<endl             <<retrievalbuffer.startingvcn.quadpart<<endl             <<retrievalbuffer.extents[0].lcn.quadpart<<endl             <<retrievalbuffer.extents[0].nextvcn.quadpart              - retrievalbuffer.startingvcn.quadpart<<endl;         returns = true;         break;      default:         cout<<"error in code or input error"<<endl;         break;     } } 


Comments

Popular posts from this blog

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

php - render data via PDO::FETCH_FUNC vs loop -

The canvas has been tainted by cross-origin data in chrome only -