WriteFile sous XP 64

Signaler
Messages postés
111
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
5 août 2011
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Salut à tous.

Je viens d'installer un XP Pro 64 et horreur, la fonction WriteFile ne fonctionne pas.
Est-ce un problème d'option du compiler où la fonction qui n'est pas compatible avec le 64 bits ???

PS : J'utilise Borland C++ Builder.

A+

9 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
WriteFile fonctionne (et heureusement...) sous Win64.

ciao...
BruNews, MVP VC++
Messages postés
111
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
5 août 2011
1
D'ou le problème peut venir ? J'ai une carte mère un peu spécifique qui possède 4 Slot IDE.
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
C'est l'OS qui gère les périphs, si les disques sont bien reconnus alors le driver disque envoie les données sans problème.
Faudrait savoir le type d'erreur, FormatMessage().

void DisplayLastError(HWND hOwner)
{
  LPVOID lpMsgBuf = 0;
  DWORD dwErr = GetLastError();
  if(dwErr) {
    FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
                  NULL, dwErr, MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),
                  (LPTSTR) &lpMsgBuf, 0, NULL);
    if(lpMsgBuf) {
      MessageBox(hOwner, (LPCTSTR)lpMsgBuf, "Error", MB_ICONEXCLAMATION);
      LocalFree(lpMsgBuf);
    }
  }
}

ciao...
BruNews, MVP VC++
Messages postés
111
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
5 août 2011
1
Oops je précise que mon WriteFile me sert à lire des disque dur en bas niveau avec [file://\\.\PhysicalDrive0 \\\\.\\PHYSICALDRIVE0
].
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Alors sera surement une question de droits du compte ou truc de ce genre.

ciao...
BruNews, MVP VC++
Messages postés
111
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
5 août 2011
1
Merci pour les précision je vais plencher sur le problème.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
"WriteFile me sert à lire des disque dur"
Même en 64 bits, je crois qu'un WriteFile sert surtout à écrire, pas à lire

Pourqoi ne pas commencer par regarder ce que ca donne sur un fichier normal?
Messages postés
111
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
5 août 2011
1
Autant pour moi vecchio56 WrtiteFile me sert à formater des disques et donc à écrire...

Cela étant dit j'ai résolu le problème en diminuant le nombre consécutif de secteurs à écrire je suis passé de 65536 secteurs à 1 et ça marche (Bizarre!!!)
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Moi le seul truc que j'avais remarqué c'est qu'on doit lire en effet par secteurs (512 octets). Mais j'arrive très bien a lire un seul secteur à la fois.