2009-11-12 25 views
1

J'ai un code C# qui appelle CreateFile sur un chemin de périphérique physique différent à chaque fois via une boucle (ie \. \ PhysicalDrive1, puis \. \ PhysicalDrive2, ...) via pInvoke, puis en utilisant la poignée retournée faire d'autres choses de bas niveau des fenêtres. À la fin de la boucle, il appelle CloseHandle sur la poignée. Pendant le débogage, j'ai remarqué que la valeur int de la poignée était la même à travers la boucle. Je peux voir que cela soit attendu (Windows réutilise simplement le handle) ou inattendu (le handle n'a pas été libéré lors du dernier passage).Appel de CreateFile sur un chemin de périphérique physique dans une boucle

Donc je veux juste vérifier si ce comportement est attendu (ou du moins pas incorrect).

Répondre

3

Un handle est juste un index pour une entrée dans une table du noyau. Si vous ouvrez et fermez un handle plusieurs fois, il est tout à fait possible qu'il obtienne exactement la même entrée dans la table et donc le même index. Sachez que cette implémentation est spécifique à l'implémentation et peut être modifiée avec toute nouvelle version, service pack ou QFE.

+0

Merci, c'était ce que disait mon intuition, mais j'avais besoin de la validation. –