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
Post a Comment