Você está na página 1de 42

Deshabilitar el controlador del mouse y Habilitar hasta que se hayan cargado todos los procesos y servicios del Sistema

Operativo.
Sistemas Operativos Snchez Pia Eduardo

TEORA
Con apoyo del lenguaje de programacin Turbo C utilizaremos varias funciones especiales que permiten que los programas accedan a los recursos de la computadora mediante las funciones BIOS o DOS. Cada procesador, sistema operativo y entorno tiene sus propios mtodos de acceder a los recursos del sistema.

Registros de la CPU
La familia de procesadores 8086 tiene 14 registros en los que se pone la informacin para procesar o el programa de control. Los registros pueden ser de las categoras siguientes:

Interrupciones
Una interrupcin es un tipo especial de instruccin que provoca la parada de la ejecucin del programa, guarda el estado actual del sistema en la pila y salta a una rutina de manejo de la interrupcin que se determina por el nmero de la interrupcin.

Interrupciones
La CPU permite a un programa ejecutar una interrupcin software por la instruccin INT. El nmero que sigue a la instruccin determina el nmero de la interrupcin. Por ejemplo, INT 21h provoca la interrupcin 21h

Interrupciones
Muchas de estas interrupciones son usadas por el BIOS o el DOS como un medio de acceder a diversas funciones que son parte del sistema operativo. Cada interrupcin se asocia a una categora de servicios a las que accede que son determinados por el valor del registro AH.

Funcin int86()
La funcin int86() de Turbo C se usa para ejecutar una interrupcin de software. Se declara como: int86(int intnum, union REGS *in, union REGS *out) El nmero de la interrupcin en esta funcin es intnum, in es una unin que contiene los registros que se usarn para pasar la informacin a los manejadores de la interrupcin y out es una unin que guardar los valores devueltos por la interrupcin (si los hay).

Funcin int86()

struct WORDREGS { unsigned int ax, bx, cx, dx, si, di, cflag, flags; };

struct BYTEREGS {
unsigned char al, ah, bl, bh, cl, ch, dl, dh; }; union REGS { struct WORDREGS x; struct BYTEREGS h; };

Funcin int86()

Como

se puede observar en la en el cdigo anterior, REGS es una unin de dos estructuras que contiene el archivo de encabezado DOS.H. Usar la estructura WORDREGS permite acceder a los registros de la CPU como cantidades de 16 bits. El uso de BYTEREGS da acceso a los registros de 8 bits.

MANIPULANDO EL CURSOR

Se puede desaparecer el cursor si

se coloca un 2 en el 5 bit del registro AX. Para colocar el 5 bit con el valor de 2, se coloca el nmero hexadecimal 0002 en el registro AX. Para volver a mostrar el cursor se coloca un 1 en el 5 bit del registro colocando el numero hexadecimal 0001 en el registro AX.

MANIPULANDO EL CURSOR

MANIPULANDO EL CURSOR
Ejemplo de uso: Esconder mouse.

regs.x.ax=0x0002; // Inicializar el registro AX con el valor 2(hexadecimal) es


decir, invoca el servicio 2 de la INT 33h (mouse) para Esconder el mouse. Ejemplo de uso: Mostrar mouse.

regs.x.ax=0x0001; // Inicializar el registro AX con el valor 1(hexadecimal) es


decir, invoca el servicio 1 de la INT 33h (mouse) para mostrar el mouse.

MANIPULANDO EL CURSOR
Para este proyecto en lugar de ocultar el cursor voy a deshabilitar el controlador del mouse cambiando los valores hexadecimales para los registros AX. De igual manera para volver a habilitar el controlador del mouse se cambiaran los valores de los registros. Con la siguiente tabla nos daremos un ejemplo de los nuevos valores que tomaran los registros

MANIPULANDO EL CURSOR

Ejemplo. Administracin de Dispositivos


Nos dirigimos al panel de control ubicamos el icono de administrador de equipos seleccionamos administrador de dispositivos ubicamos el dispositivo a deshabilitar (en este ejemplo unidad de CD- ROM) damos clic derecho y deshabilitar

Ejemplo. Administracin de Dispositivos

Esto lo hare con dos pequeos programas compilados


en Turbo C. Uno para Deshabilitar y otro para Habilitar el controlador del Mouse. Los cdigos seran los siguientes. Cdigo para Deshabilitar controlador Cdigo para Habilitar controlador

Cdigo para Deshabilitar controlador



#include <dos.h>

#include <conio.h>
void main(void) { union REGS entra, sale; /*Declaracion de la union regs de tipo REGS para el uso de los registros de la CPU*/ clrscr(); entra.x.ax = 0x001f; // Inicializar el registro AX con el valor 001F(hexadecimal) // es decir, invoca el servicio 001F de la INT 33h (mouse) // para Desactivar el Controlador del mouse int86( 0x33, &entra, &sale ); // Invoca la INT 33h (mouse) return;

Cdigo para Habilitar controlador



#include <dos.h>

#include <conio.h>
void main(void) { union REGS entra, sale; /*Declaracion de la union regs de tipo REGS para el uso de los registros de la CPU*/ clrscr(); entra.x.ax = 0x0020; // Inicializar el registro AX con el valor 0020(hexadecimal) // es decir, invoca el servicio 0020 de la INT 33h (mouse) // para Activar el Controlador del mouse int86( 0x33, &entra, &sale ); // Invoca la INT 33h (mouse) return;

Bien, despus de que compilamos y ejecutamos estos dos programas se generaran dos archivos ejecutable extensin (.exe). Pero ahora como le hacemos para cargarlos al arranque del sistema? La podemos hacer de manera manual con la utilidad de configuracin del sistema esta ventana se obtiene presionando las teclas Ctrl + R, escribir msconfig, da enter. Y en la pestaa inicio, se localizan todos los procesos que inician cuando arranca el sistema operativo.

Para cargar nuevos procesos vamos a crear


accesos directos de los dos programas que generamos, es decir, los programas con extensin (.exe) mandndolos al escritorio.

A continuacin damos clic en inicio. Todos los programas en la carpeta inicio dar clic derecho, elegir Abrir todos los usuarios.

Actualizamos la ventana de configuracin de


inicio de sistema. Se vern los nuevos procesos que iniciaran cuando vuelva a reiniciar el sistema operativo

El problema con este procedimiento es que no


me permite establecer el orden en que quiero que se ejecuten los programas, es decir no me permite elegir el orden de ejecucin.

Existe otra manera de cargar nuevas aplicaciones al arranque del sistema operativo. Para poder cargar los programas que necesitamos.

Primero

vamos al escritorio y buscamos los accesos directos de los programas, el primero que vamos a utilizar es el que Desactiva el controlador (DESACTIV.EXE), damos clic derecho sobre l y elegimos propiedades, en la pestaa programa y en el apartado lnea de comando, copiamos la ruta que muestra.

Esta ruta la vamos a utilizar para editar un registro en la clave [1]KEY_LOCAL_MACHINE\Sofware\Microsoft\Windows\C urrentVersion\RunOnce Cuando tengamos esta clave, en el espacio en blanco damos clic derecho, nuevo, (clave) valor numrico. Le colocamos un nombre, y damos doble clic en el nuevo registro, para poder editar, despus colocamos la ruta que copiamos con anterioridad del acceso directo das clic en aceptar.

A continuacin regresamos al escritorio y buscamos los accesos directos de los programas, el segundo programa que vamos a utilizar es el que Activa el controlador (ACTIVE.EXE), damos clic derecho sobre l y elegimos propiedades, en la pestaa programa y en el apartado lnea de comando, copiamos la ruta que muestra.

Esta ruta la vamos a utilizar para editar un registro en la clave

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
Cuando tengamos esta clave, ubicamos a Userinit. Damos doble clic sobre l, para poder editar, veremos que ya tiene una ruta por defecto que es la del programa userinit.exe despus de esta ruta, colocamos la ruta que copiamos con anterioridad del acceso directo das clic en aceptar.

Referencias:
SEP SEIT DGIT. INSTITUTO TECNOLGICO DE NUEVO LAREDO.
INGENIERA EN SISTEMAS COMPUTACIONALES. MiniTaller: Tcnicas avanzadas de programacin en Lenguaje C++. Instructor: M.C. Bruno Lpez Takeyas. Jefe del Centro de Cmputo. Noviembre del 2002. Documento electrnico. [Tecnicas avanzadas de programacion en Lenguaje C (Manual).pdf]

El Proceso de carga de Windows XP. Jos Gallardo y Fernando Muoz.

Você também pode gostar