2010-08-12 6 views
0

J'ai un UNICODE_STRING que je voudrais comparer à une chaîne ANSI terminée par un zéro pour vérifier s'ils sont identiques. J'utilise C. Je voudrais éviter d'inclure winternl.h pour RtlInitUnicodeString.Conversion d'un UNICODE_STRING en ANSI ou vice versa en C

Quelle est la méthode préférée pour ce faire?

Ou, est-il un problème avec moi en utilisant MultiByteToWideChar() pour convertir la chaîne ANSI en une représentation de caractères larges, puis en comparant cela au UNICODE_STRING.buffer (étant entendu que le tampon peut ne pas être terminé par un caractère nul)?

Répondre

1

WideCharToMultiByte semble le chemin le plus logique. Il peut gérer les chaînes qui ne sont pas terminées par zéro et produit une chaîne terminée. Et il essaie de faire quelque chose de significatif avec des points de code qui n'ont pas de caractère dans la page de code du système. Alors juste strcmp().

1

Je voudrais simplement convertir la chaîne ANSI en utilisant MultiByteToWideChar(). La fonction CompareString() prend des paramètres de longueur pour chaque chaîne, donc pas de soucis concernant le terminateur nul-absent manquant. Faites juste attention aux paramètres qui prennent ou renvoient des octets vers les caractères, et il ne devrait pas y avoir de problème lors de l'utilisation de ces fonctions.

Questions connexes