¿Por qué se llama identificador?
Comprensión funcional:
¿Qué es "manejar"? Manejar es el significado original de manejar, que significa administración. Es con lo que te enfrentas en el sistema operativo.
Por poner un ejemplo común, si vas a la universidad, la escuela (sistema operativo) te dará un número de estudiante cuando te matricules.
Ten en cuenta que este número lo asigna la escuela y no puedes elegirlo tú mismo.
Con este número (número de estudiante, suponiendo que un número tenga múltiples usos), podrás disfrutar de los servicios que brinda la escuela:
Por ejemplo, puedes tomar prestados libros de la biblioteca, Comer en la cafetería, ir al aula, etc.
Pero no se puede comprar cerveza en la cafetería porque el colegio no permite este tipo de servicios.
Los servicios proporcionados por el sistema en la computadora son llamadas API. Tiene un HANDLE, por lo que puede pedirle con confianza al sistema que llame a los servicios API.
El puntero tiene la mayor parte del poder. Con el puntero, puedes beber y pelear en todas partes, y la escuela (sistema operativo) no tiene nada que ver con eso.
Por lo tanto, la diferencia entre un identificador y un puntero es que el puntero del identificador llama al servicio proporcionado por el sistema.
Aunque el identificador es un número que se puede distinguir entre sí, sigue siendo diferente de nuestro número de identificación ordinario.
El programador puede definir el número de identificación ordinario y. el identificador No, es la generación de objetos que especifica el sistema.
Es para distinguir varios objetos que existen en el sistema. El encanto de los identificadores no lo dan los programadores.
Comprensión conceptual
1. El identificador es la base de toda la programación de Windows. Un identificador es un valor entero único.
Tiene una longitud de cuatro bytes. Valores utilizados para marcar diferentes objetos y diferentes instancias del mismo objeto en la aplicación,
Por ejemplo, ventanas, botones, iconos, barras de desplazamiento, dispositivos de salida, controles o archivos, etc.
La aplicación puede acceder a la información del objeto correspondiente a través del identificador.
2. El identificador no es un puntero y el programa no puede usarlo para leer información directamente del archivo.
Si no se utiliza un identificador en un archivo de E/S, es inútil.
3. Un identificador es un número entero único que Windows usa para representar que una aplicación lo ha creado o lo está usando.
Windows usa una gran cantidad de identificadores para representar muchos objetos.
Comprensión mecánica
El análisis anterior es muy clásico, pero creo que hay un punto que hay que señalar. Si está mal, indíquelo.
No hay duda de que un puntero es un puntero, pero nuevamente, este puntero es diferente del puntero en lenguaje C.
Dado que Windows es un sistema multitarea, su memoria es móvil.
Por lo tanto, si un puntero apunta a una parte de la memoria en un momento determinado, y luego se mueve en un momento determinado. Más tarde, el sistema lo elimina,
luego, si usa el puntero nuevamente, se producirá un error.
Para resolver este problema, Windows abre un bloque de memoria en el área del sistema para almacenar el identificador. El valor del identificador es una dirección.
Cuando se elimina el bloque de memoria. , Windows modificará el valor del identificador, y luego el valor del identificador siempre será válido al acceder al bloque de memoria.
Debido a esto, cuando usas GlobalAlloc para asignar memoria, si especificas que las propiedades de la memoria son fijas,
entonces su valor de retorno se puede asignar directamente al puntero si el; La propiedad de la memoria es móvil,
entonces el valor de retorno debe asignarse al identificador y debe bloquearlo globalmente antes de usarlo.
Esta es mi comprensión de los identificadores, no sé si es correcta.
Según tengo entendido
En realidad, un identificador es un puntero a un puntero. Es decir:
En la programación de Windows, un identificador es simplemente un número que una aplicación usa para identificar algo.
Si quieres entender los identificadores más a fondo, puedo decirte que los identificadores son punteros.
Sabemos que el llamado puntero es la dirección de memoria.
Una vez iniciada una aplicación, en ella viven los objetos que componen el programa.
Parece que mientras conozcamos la primera dirección de memoria, podemos usar esa dirección para acceder al objeto en cualquier momento.
Pero si realmente lo crees, estás totalmente equivocado.
Sabemos que Windows es un sistema operativo basado en memoria virtual. En este entorno,
El Administrador de memoria de Windows a menudo mueve objetos hacia adelante y hacia atrás en la memoria para satisfacer las necesidades de memoria de varias aplicaciones.
Un objeto que se mueve significa que su dirección ha cambiado. Si la dirección siempre cambia, ¿dónde encontramos el objeto?
Para solucionar este problema, el sistema operativo Windows reserva direcciones de memoria interna para las aplicaciones.
Estas direcciones se utilizan para registrar específicamente cambios en las direcciones de objetos en la memoria y en las direcciones (memoria). posición de las unidades) permanece sin cambios.
Después de mover la ubicación del objeto en la memoria, el administrador de memoria de Windows informará a esta dirección de manejo de la nueva dirección del objeto para que pueda guardarse.
De esta manera, solo necesitamos recordar esta dirección de identificador e indirectamente podemos conocer la ubicación exacta del objeto en la memoria.
Esta dirección la asigna el sistema cuando se carga el objeto y la libera al sistema cuando se descarga el objeto.
Dirección de manejo (estable) → dirección del objeto en la memoria → dirección del objeto en la memoria (inestable) → objeto real
Sin embargo, debe tenerse en cuenta que cada vez que el programa se reinicia No hay garantía de que el identificador asignado al programa sea el mismo que antes y, en la mayoría de los casos, será diferente. Si pensamos en ir al cine a ver una película como
el lanzamiento de una aplicación, entonces el handle asignado a la aplicación siempre será diferente, al igual que cada vez que un cine nos vende una entrada, su Los asientos son siempre iguales que diferentes.