¿Por qué se llama identificador?
Comprensión funcional:
¿Qué es un "mango"? Mango significa mango, que significa mango. Es una cuestión de cómo manejas el sistema operativo.
Para dar un ejemplo popular, si eres admitido en la universidad, la escuela (sistema operativo) te dará un número de identificación de estudiante después de la inscripción.
Tenga en cuenta que este número lo asigna la escuela y no se puede seleccionar.
Con este número (carnet de estudiante, suponiendo que una tarjeta pueda usarse para múltiples propósitos), podrás disfrutar de los servicios que brinda la escuela:
Por ejemplo, puedes tomar prestados libros de la biblioteca, comer en la cafetería, clases en el aula, etc.
Pero no se puede comprar cerveza en la cafetería porque el colegio no permite este servicio.
En un ordenador, los servicios que proporciona el sistema son llamadas API. Con HANDLE, puede pedirle al sistema que llame de forma segura a los servicios API.
Los punteros son mucho más poderosos. Con un puntero, puedes beber y pelear en todas partes, lo que está fuera del control de la escuela (sistema operativo).
Entonces, 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í, es diferente de nuestro número de identificación ordinario.
El programador puede definir números de identificación ordinarios, pero no los identificadores. Son generados por objetos y especificados por el sistema.
Es para distinguir los objetos que existen en el sistema. Este identificador no lo da el programador.
Comprensión conceptual
1. Los identificadores son la base de toda la programación de Windows. Un identificador se refiere a un valor entero único utilizado.
Se refiere a un valor de cuatro bytes de longitud utilizado para marcar diferentes objetos en la aplicación y diferentes instancias del mismo objeto.
Por ejemplo, una ventana, botón, icono, barra de desplazamiento, dispositivo de salida, control o archivo.
La aplicación puede acceder a la información del objeto correspondiente a través del identificador.
2. Un identificador no es un puntero y un programa no puede leer directamente información del archivo utilizando su identificador.
Si el identificador no se utiliza en el archivo de E/S, es inútil.
3. Un identificador es un número entero único utilizado por Windows para marcar la creación o el uso de una aplicación.
Windows utiliza muchos identificadores para marcar muchos objetos.
Comprensión del mecanismo
El análisis anterior es muy clásico, pero creo que hay un punto que hay que señalar. Si no, testifica.
El identificador es un puntero, sí, pero este puntero es diferente del puntero en c.
Como Windows es un sistema multitarea, su memoria se puede mover.
De esta manera, si un puntero apunta a un fragmento de memoria en un momento determinado, pero el sistema lo elimina más adelante,
Si usa este puntero nuevamente, cometerás un error.
Para solucionar este problema, Windows abre una memoria en el área del sistema para almacenar el identificador. El valor de este identificador es una dirección.
Cuando se elimina esta memoria, Windows modificará el valor de este identificador. Cuando se acceda nuevamente a esta memoria, el valor del identificador siempre será válido.
Entonces, cuando usas la memoria asignada por GlobalAlloc, si especificas que las propiedades de la memoria son fijas,
entonces su valor de retorno se puede dar directamente a un puntero. Si es móvil,
Debes darle un identificador al valor de retorno y debes usar GlobalLock antes de usarlo.
Esta es mi comprensión del controlador. ¿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 utilizado por la aplicación para identificar algo.
Si quieres entender los identificadores más a fondo, puedo decirte que los identificadores son punteros a punteros.
Sabemos que el llamado puntero es una dirección de memoria.
Una vez iniciada la aplicación, los objetos que componen el programa permanecen en su interior.
Para entenderlo de forma sencilla, parece que siempre que conozcas la primera dirección de esta memoria, puedes utilizar esta 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 de sistema,
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.
Mover un objeto significa que su dirección ha cambiado. Si la dirección sigue cambiando así, ¿dónde vas a encontrar pareja?
Para solucionar este problema, el sistema operativo Windows libera algunas direcciones de almacenamiento interno para cada aplicación.
Se utiliza para registrar el cambio de dirección de cada objeto de la aplicación en la memoria. Esta dirección (la ubicación de la unidad de almacenamiento) en sí misma no cambia.
Después de mover la ubicación de un objeto en la memoria, el Administrador de memoria de Windows notifica a la dirección del identificador la nueva dirección del objeto para guardarlo.
De esta forma, sólo necesitamos recordar la dirección del identificador para saber indirectamente dónde está el objeto en la memoria.
Esta dirección la asigna el sistema cuando se carga el objeto y se libera al sistema cuando se descarga el sistema.
Dirección de manejo (estable) → dirección del objeto en memoria → dirección del objeto en memoria (inestable) → objeto real.
Sin embargo, debe tenerse en cuenta que cada vez que se reinicia el programa, el sistema no puede garantizar que el identificador asignado al programa seguirá siendo
el método de procesamiento original, que realmente es No es el caso en la mayoría de los casos. Si pensamos en ir al cine a ver una película como el comienzo de una aplicación, entonces el identificador asignado a la aplicación por el sistema siempre es diferente, que es el mismo cada vez que se enciende.
Las entradas que nos venden las salas de cine son siempre diferentes. Lo mismo ocurre con los asientos.