for (ULONG i = 1; i < UsaCount;i++)
((USHORT*)lpFileRecord)[(256 * (i-1)) + 255] = lpUsa[i];
}
++
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201822 19 oct. 2009 à 00:25
Salut ShareVB,
Je suis en train d'appliquer l'exemple donné dans le livre de Gary pour un tout autre usage (C#), je décortique en parallèle les sources de ta dll NTFS.
Dans mes tests (projet c++) je fais appel à ta méthode MapMFT et je rencontre un soucis à l'intérieure de celle-ci.
Le debuggeur de VS2008 hurle à la corruption lors de la réservation d'un espace sur le tas pour lpBuff.
Voici le message: Windows has triggered a breakpoint in test.exe. This may be due to a corruption of the heap, which indicates a bug in test.exe or any of the DLLs it has loaded.
Je comprend pas ce qui se passe !
Peux-tu m'aider stp ?
Willi
unruledboy
Messages postés9Date d'inscriptiondimanche 10 juillet 2005StatutMembreDernière intervention26 juin 2008 26 juin 2008 à 15:17
Hi,
two more problems found:
1.it will crash in some computers, exactly the same operating system(windows 2003), but some works, strange.
2.it uses too much memory, for a 40g drive(100,000 files) will consume 800M+ memory after running the MapMFT, any idea how use less memory? I believe that it could only be done through modifying the NTFS.dll file.
unruledboy
Messages postés9Date d'inscriptiondimanche 10 juillet 2005StatutMembreDernière intervention26 juin 2008 25 juin 2008 à 05:41
hi, how to tell the condiction of a deleted file, such as: good(nothing changed, could be 100% recovered), poor(file record has been overwritten, could not be recovered)?
27 janv. 2010 à 21:45
7 nov. 2009 à 11:28
Méthode originale:
void FixupUSA(LPFILE_RECORD lpFileRecord)
{
DWORD UsaCount = lpFileRecord->Ntfs.UsaCount;
USHORT* lpUsa = (USHORT*)((UCHAR*)lpFileRecord + lpFileRecord->Ntfs.UsaOffset);
for (ULONG i = 0; i < UsaCount;i++)
((USHORT*)lpFileRecord)[256 * i + 255] = lpUsa[i];
}
à remplacer par:
void FixupUSA(LPFILE_RECORD lpFileRecord)
{
DWORD UsaCount = lpFileRecord->Ntfs.UsaCount;
USHORT* lpUsa = (USHORT*)((UCHAR*)lpFileRecord + lpFileRecord->Ntfs.UsaOffset);
for (ULONG i = 1; i < UsaCount;i++)
((USHORT*)lpFileRecord)[(256 * (i-1)) + 255] = lpUsa[i];
}
++
19 oct. 2009 à 00:25
Je suis en train d'appliquer l'exemple donné dans le livre de Gary pour un tout autre usage (C#), je décortique en parallèle les sources de ta dll NTFS.
Dans mes tests (projet c++) je fais appel à ta méthode MapMFT et je rencontre un soucis à l'intérieure de celle-ci.
Ligne:
lpBuff = (LPVOID)new UCHAR[BytesPerFileRecord];
Le debuggeur de VS2008 hurle à la corruption lors de la réservation d'un espace sur le tas pour lpBuff.
Voici le message: Windows has triggered a breakpoint in test.exe. This may be due to a corruption of the heap, which indicates a bug in test.exe or any of the DLLs it has loaded.
Je comprend pas ce qui se passe !
Peux-tu m'aider stp ?
Willi
26 juin 2008 à 15:17
two more problems found:
1.it will crash in some computers, exactly the same operating system(windows 2003), but some works, strange.
2.it uses too much memory, for a 40g drive(100,000 files) will consume 800M+ memory after running the MapMFT, any idea how use less memory? I believe that it could only be done through modifying the NTFS.dll file.
25 juin 2008 à 05:41
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.