Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
¿Cómo Acceder A IOCTL_CONSOLE Desde Gambas3?
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje ¿Cómo Acceder A IOCTL_CONSOLE Desde Gambas3? 
 
Hola a todos de nuevo:
¿Alguien puede ayudarme con la pregunta del asunto?
Básicamente, quiero acceder a y utilizar IOCTTL_CONSOLE(2) - KDGETLED, KDGKBLED y KDGKBTYPE.
Muchas gracias de antemano.
 



 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Cómo Acceder A IOCTL_CONSOLE Desde Gambas3? 
 
Esta pagina para tener una idea general sobre uso de la función externa ioctl( ):

    https://www.gambas-it.org/wiki/index.php?title=Ioctl()
 



 
última edición por vuott el Martes, 15 Octobre 2019, 10:05; editado 1 vez 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Cómo Acceder A IOCTL_CONSOLE Desde Gambas3? 
 
Muchísimas gracias, vuott.

Modifico el enlace, eso sí, que lleva a una página vacía:

IOCTL Gambas3 Italia
 



 
última edición por Grandamakulo el Martes, 15 Octobre 2019, 10:59; editado 6 veces 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Cómo Acceder A IOCTL_CONSOLE Desde Gambas3? 
 
Grandamakulo escribió:  
Modifico el enlace, eso sí, que lleva a una página vacía:

Oh, sì, pardon.
Gracias.
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Cómo Acceder A IOCTL_CONSOLE Desde Gambas3? 
 
Pues probando el código, tengo un problema. Cuando intento abrir "/dev/tty" me da un «manejador» nulo. Esto es:

  Dim b As File

  b = Open "/dev/tty" For Read

 
Produce b.Handle=Null

¿Alguna sugerencia?


Pues el error parece otro... Lo compruebo y consulto.
 



 
última edición por Grandamakulo el Martes, 15 Octobre 2019, 20:48; editado 1 vez 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Cómo Acceder A IOCTL_CONSOLE Desde Gambas3? 
 
Tu file-device "/dev/tty" tiene todos los permisos de acceso ?


Que pasa con este codigo ?
Public Sub Main()

   Dim b As File

  b = Open "/dev/tty" For Read

  Print Object.IsValid(b), IsNull(b), b

  
  b.Close

End

 



 
última edición por vuott el Martes, 15 Octobre 2019, 20:55; editado 1 vez 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Cómo Acceder A IOCTL_CONSOLE Desde Gambas3? 
 
Sí, de hecho, no es ese el error. Me he equivocado. Sí que me da un manejador. Creo que el error me lo devuelve IOCTL


' Ref: http://man7.org/linux/man-pages/man2/ioctl_console.2.html

Private Const KDGETLED As Long = &H4B31
Private Const LED_CAP As Byte = 4
Private Const LED_NUM As Byte = 2
Private Const LED_SCR As Byte = 1

Private Extern ioctl(fd As Integer, request As Long, arg As Long) As Integer In "libc:6"


Public Function BloqMayBloqNum() As Integer

  Dim lngAri As Long    ' Argumentos ioctl
  Dim intIoc As Integer ' Resultado de ioctl: 0, funciona; -1, error
  Dim filTty As File    ' Archivo tty para pasar a ioctl
  Dim intRes As Integer

  filTty = Open "/dev/tty" For Read
  If IsNull(filTty) Then Message("No se pudo abrir la consola TTY")
  If IsNull(filTty.Handle) Then Message("No se pudo manejar la consola TTY")
  
  intIoc = ioctl(filTty.Handle, KDGETLED, lngAri)
  If intIoc < 0 Then Message("Sin resultado TTY")

  filTty.Close
  ' TODO: Transformar resultado en matriz
  intRes = lngAri And (LED_CAP + LED_NUM + LED_SCR)
 
  Return intRes

End


IOCTL resulta siempre «-1», es decir, ejecutado con error.
 



 
última edición por Grandamakulo el Martes, 15 Octobre 2019, 21:19; editado 1 vez 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Cómo Acceder A IOCTL_CONSOLE Desde Gambas3? 
 
vuott escribió:  
Tu file-device "/dev/tty" tiene todos los permisos de acceso ?


Que pasa con este codigo ?
Public Sub Main()

   Dim b As File

  b = Open "/dev/tty" For Read

  Print Object.IsValid(b), IsNull(b), b

  
  b.Close

End


Efectivamente, funciona bien:

  True      False   (File 0x55bc0ea71ca8)

 



 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Cómo Acceder A IOCTL_CONSOLE Desde Gambas3? 
 
Grandamakulo escribió:  
Creo que el error me lo devuelve IOCTL
....
IOCTL resulta siempre «-1», es decir, ejecutado con error.


Perdona.
¿Copiaste tú este código de un código C?
Si es así, ¿dónde se puede ver el código original escrito en C ?
 



 
última edición por vuott el Martes, 15 Octobre 2019, 23:12; editado 1 vez 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: ¿Cómo Acceder A IOCTL_CONSOLE Desde Gambas3? 
 
Bueno, encontré este codigo, escrito en C, muy parecido al tuyo:

   https://www.helpnetsecurity.com/dl/articles/txt/console1.txt

Probé aquel codigo en C, y tambien con aquel codigo en C el resultado de IOCTL es =  -1  !
Además obtengo este mensaje en console:
   ioctl: Inappropriate ioctl for device

Puedes ver este mensaje usando la función externa perro() (usada en el codigo escrito en C):

Private Extern perror(s As String) As String in "libc:6"
   ......
   intIoc = ioctl(filTty.Handle, KDGETLED, VarPtr(lngAri))
   If intIoc < 0 Then Message("Sin resultado TTY" & perror("\nioctl"))
   ......

 



 
última edición por vuott el Martes, 15 Octobre 2019, 23:54; editado 2 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario