Est-POIGNÉE similaires au descripteur de fichier sous Linux?
POIGNÉE est similaire au descripteur de fichier sous Linux? Autant que je sache, la POIGNÉE est utilisée pour la manipulation de toutes les ressources sur Windows, tels que la police, icônes, fichiers, périphériques..., qui dans son essence est juste un pointeur void point à un bloc de mémoire contenant des données d'une ressource spécifique
Oui, la même chose. Ce n'est pas un pointeur btw.
Un HANDLE Windows est une sorte de jeton pour un objet de noyau (toujours en se référant à des objets qui ont été chargés en mémoire). Le système d'exploitation crée un mappage d'objets du noyau et de la poignée (transmise à l'utilisateur de l'espace) est la "clé" pour que la cartographie. Avis il peut y avoir différentes poignées pour le même objet de noyau (même dans le même processus) et l'OS ne va pas détruire l'objet jusqu'à ce que vous fermez toutes les poignées.
Imprimer la POIGNÉE valeurs... vous allez voir qu'ils ne sont pas des pointeurs. Chose est, il n'a pas d'importance ce que les valeurs représentent, vous ne devriez pas de soins. Alors, oui, ils sont tous les deux offrent la même fonctionnalité, mais l'utilisation de différentes méthodes.
Mais vous devriez faire une différence entre true noyau Poignées, qui sont, en clair, ceux fermée avec
Demandez-vous si elles sont conceptuellement similaires ou si elles sont mises en œuvre de semblable?
Un HANDLE Windows est une sorte de jeton pour un objet de noyau (toujours en se référant à des objets qui ont été chargés en mémoire). Le système d'exploitation crée un mappage d'objets du noyau et de la poignée (transmise à l'utilisateur de l'espace) est la "clé" pour que la cartographie. Avis il peut y avoir différentes poignées pour le même objet de noyau (même dans le même processus) et l'OS ne va pas détruire l'objet jusqu'à ce que vous fermez toutes les poignées.
Imprimer la POIGNÉE valeurs... vous allez voir qu'ils ne sont pas des pointeurs. Chose est, il n'a pas d'importance ce que les valeurs représentent, vous ne devriez pas de soins. Alors, oui, ils sont tous les deux offrent la même fonctionnalité, mais l'utilisation de différentes méthodes.
Mais vous devriez faire une différence entre true noyau Poignées, qui sont, en clair, ceux fermée avec
CloseHandle()
, et d'autres objets dont la syntaxe est similaire, mais qui ne sont pas des objets du noyau, comme les poignées de fenêtre (HWND), les objets GDI (HICON, HGC, HBITMAP), HMENU, etc.Demandez-vous si elles sont conceptuellement similaires ou si elles sont mises en œuvre de semblable?
OriginalL'auteur Amumu | 2011-11-01
Vous devez vous connecter pour publier un commentaire.
Oui, Windows poignées sont très similaire à Unix descripteurs de fichiers (FDs).
Noter qu'un
HANDLE
n'est pas un pointeur vers un bloc de mémoire. Bien queHANDLE
esttypedef
'd commevoid *
, c'est juste pour le rendre plus opaque. Dans la pratique, unHANDLE
est un indice qui est recherché dans un tableau, comme un FD nombre est.Ce blog explore certaines des similitudes et des différences:
http://lackingrhoticity.blogspot.com/2015/05/passing-fds-handles-between-processes.html
OriginalL'auteur Mark Seaborn
Oui, ils sont similaires sur le plan conceptuel. Les descripteurs de fichier sous unix carte des entiers un par processus tableau de pointeurs vers d'autres objets (qui peuvent être d'autres choses que des fichiers, trop). Les descripteurs de fichier ne sont pas aussi unifiée -- il y a certaines choses existent dans un "espace de noms" (p. ex., processus de minuteries). À cet égard, Windows est plus orthogonale -- CloseHandle sera toujours libre d'une ressource indépendamment de ce qu'il est.
OriginalL'auteur zvrba
Outre le fait que les poignées de se référer à une notion plus vaste sur Windows. Nous avons tout de même limiter la discussion aux seuls descripteurs de fichiers, il y a des différences significatives. Il y a une fonction appelée _open_osfhandle() dans le cadre de la bibliothèque run-time C sur Windows. Son but est de, je cite "Associe un run-time C descripteur de fichier à un fichier du système d'exploitation de la poignée." C'est une colle entre le noyau de la terre et de la C Run-time de la terre. La signature de la fonction est comme ci-dessous:
Descripteurs de fichiers Windows est en fait plus riche en fonctionnalités que les descripteurs de fichier en C, qui peut être configuré lorsqu'un descripteur de fichier est créé avec CreateFileA (version ANSI) ou CreateFile (UTF16 version), ce qui reflète la différence de conception entre les *Nix et Windows. Et la poignée de porte toutes ces informations autour de, avec toutes ses implications.
OriginalL'auteur John Z. Li
Un
HANDLE
est un pointeur voidWindows Types De Données
int
variables. Mais unHANDLE
n'est pas une adresse de mémoire. Ettypedef PVOID HANDLE;
n'est même pas correct. (La recherche de laSTRICT
de la macro et de son effet)(Vérifier yic81 le commentaire de "La déclaration
typedef HANDLE HINSTANCE;
est totalement erronée, comme beaucoup d'autres typedef Poignées. Grande majorité d'entre eux sont maintenantDECLARE_HANDLE()
des structures." sur la page du lien. Il est à droite, la page MSDN est fausse.)OriginalL'auteur Steven Penny