Autres conseils

Qu'est-ce que vous décrivez les montants à essentiellement le même genre de mal qui infeste plusieurs API Windows qui nécessitent des quantités imprévisibles de la mémoire. La pratique est de les appeler sans tampon pour placer leur travail, ils font le travail de toute façon, sans enregistrer les résultats, mais en comptant le nombre d'octets qu'ils avaient besoin le long du chemin. Ensuite, vous allouez un buffer de cette taille, et d'appeler à nouveau la fonction avec le tampon, sachant la taille.

Ceci est indiciblement mal. Il est l'équivalent de la programmation informatique d'une bureaucratie délabrée, où chaque département vous demande de remplir un formulaire qui a la plupart des mêmes informations sur ce que celui que vous avez donné au ministère précédent, mais comme il y a une autre information sur chaque formulaire, ils ne seront pas simplement prendre une copie de la forme que vous avez donné les autres gars. Ptui!

temps de programmeur est cher, le temps CPU est pas cher. Exiger aux programmeurs d'écrire le même appel API N fois pour Suss un état du monde que l'API lui-même pourrait travailler sur ses propres tentatives pour faire basculer ce sur sa tête.

Les meilleures pratiques, alors, est d'avoir le conducteur faire tout son possible pour vous assurer que votre écriture () réussit. S'il est possible de prévoir à l'avance qu'il ne peut pas réussir en vérifiant un certain état du monde, peut-être que cela devrait être un ioctl ().

Très peu, je pense - il pourrait être possible qu'une écriture de longueur nulle bloquerait si le tampon il est écrit à zéro a l'espace disponible et, dans certains pilotes. Zéro écrit interdisant la longueur pourrait rendre les choses plus simples dans des cas comme ça -. Ainsi que d'éviter beaucoup de travail perdu

Pourquoi ne pas simplement supprimer cette vérification et voir quel genre d'enfer brise réellement lâche? :)

pas une réponse sérieuse: vous pourriez obtenir un programme comme toucher : P

Je frémis à suggérer un ioctl (), mais ce ne serait pas une meilleure interface pour obtenir des informations d'état sur l'interface?

Que serait une longueur nulle écriture signifie? En général, des moyens d'écriture transfert de données ... et je suis sûr que d'autres problèmes seraient causés par ne pas vérifier pour elle et attraper ainsi la plupart des lots de mauvaise entrée aux conducteurs. y

si elle est un seul bit-de-information « ne ce » vous appelez êtes après, je pense que ioctl est le chemin à parcourir. Il est pas joli, mais que pouvez-vous faire?

Vous pouvez également prendre l'option nucléaire, l'utilisation mmap () et déplacer le tout dans l'espace utilisateur. bas frais généraux, et vous pouvez écrire le code poke classique comme « X écriture à ce registre », qui semble presque est ce que vous avez besoin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top