• Jueves 14 de Noviembre de 2024, 03:57

Autor Tema:  Pregunta Sobre Deviceiocontrol  (Leído 3687 veces)

overnat

  • Miembro activo
  • **
  • Mensajes: 52
    • Ver Perfil
Pregunta Sobre Deviceiocontrol
« en: Martes 27 de Diciembre de 2005, 16:43 »
0
Estoy viendo esta funcion , y me preguntaba si  me vale para poner una particion en modo lectura . Si es asi .

Podeis explicarme como podria hacerlo .



Gracias por la ayuda

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #1 en: Martes 27 de Diciembre de 2005, 17:31 »
0
DeviceIoControl sirve para mandar un codigo de control a un dispositivo en particular. Digamos que es la puerta de comunicacion entre modo usuario y modo kernel.

Para que pudieras hace eso tendria que existir un codigo de control que modificara los atributos de escritura/lectura de una particion. Primero tendrias que abrir un handle a la particion y despues enviar el codigo de control.

¿Encontraste alguno codigo de control que haga eso?

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

overnat

  • Miembro activo
  • **
  • Mensajes: 52
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #2 en: Martes 27 de Diciembre de 2005, 17:36 »
0
Perdoname , pero estoy un poquito verde en esto

dices que si se podria hacer pero con un codigo de control ( Que me imagino sera un funcion  ) .

Bueno no se , Tengo un codigo fuente de un programa que me pone las particiones en modo de lectura o escritura o como quiera, pero no se implementar el codigo en mi programa.

podria entonces con DeviceIoControl hacer que la particion se pusiera en modo lectura.

si puedes explicarmelo, un poco como pa uno que llega ahora del pueblo , pos mejor


Gracias tio , por la ayuda prestada De verdad.

Si puedo ayudarte en algo no dudes en preguntar .

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #3 en: Martes 27 de Diciembre de 2005, 17:40 »
0
Cita de: "overnat"
dices que si se podria hacer pero con un codigo de control ( Que me imagino sera un funcion  ) .

Bueno no se , Tengo un codigo fuente de un programa que me pone las particiones en modo de lectura o escritura o como quiera, pero no se implementar el codigo en mi programa.
Mas que una funcion es un identificador a una funcion de IO (Input/Output).

Pone el codigo si queres, pero si lo tenes no se cual es el problema, el codigo tiene que ser mas o meno asi:

1. Abrir handle a particion (CreateFileA por ejemplo)
2. Inicializacion de la estructura de input para el codigo de control
3. Envio del codigo de control (DeviceIoControl)

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

overnat

  • Miembro activo
  • **
  • Mensajes: 52
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #4 en: Martes 27 de Diciembre de 2005, 17:47 »
0
joder tio ,a lo mejor te parece que quiero que me lo hagas , pero de verdad , que estoy hecho la picha un lio . Todo lo que te estoy preguntando es para el mismo programa, y es ke no me entero de na .

haber habro un handle a un fichero dentro de una particion ( Que sera la que utilizare despues no ? )

depues llamo a la funcion deviceiocontrol y que parametros tendria que pasarle ?

y despues que ?


vaya tela vaya tela ( Si es que no se pude hacer cosas tan bestias sin conocimientos pero es keeeee....)



Salu2

overnat

  • Miembro activo
  • **
  • Mensajes: 52
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #5 en: Martes 27 de Diciembre de 2005, 17:50 »
0
A lo mejor si te digo lo que quiero hacer me ayudas de otra manera no se?

Lo que quiero realmente es hacerme una funcion que me deje en modo lectura una particion o carpetas determinadas , no se si se hace de la misma manera o de otra o yo que se . :scream:

Perdona las molestias .

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #6 en: Martes 27 de Diciembre de 2005, 17:51 »
0
Cita de: "overnat"
joder tio ,a lo mejor te parece que quiero que me lo hagas , pero de verdad , que estoy hecho la picha un lio . Todo lo que te estoy preguntando es para el mismo programa, y es ke no me entero de na .

haber habro un handle a un fichero dentro de una particion ( Que sera la que utilizare despues no ? )

depues llamo a la funcion deviceiocontrol y que parametros tendria que pasarle ?

y despues que ?
No, no me parece que quieras que te lo haga, lo que si me parece es que no estas capacitado (hoy en dia) para hacerlo.

El handle no tiene que ser al fichero sino directo a la particion o disco, o lo que sea que quieras que reciba el codigo de control.

Los parametros de la funcion van a ser el handle anteriormente abierto, el codigo de control en cuestion (que no lo se, tiene que estar si o si en el codigo que tenes, el segundo parametro en la llamada a la funcion y debe ser una constante), una estructura relacionada con el codigo, el tamaño de la misma, una estructura de respuesta, su tamaño, un puntero a un DWORD para el tamaño de bytes de la respuesta y una estructura de tipo OVERLAPPED o mejor 0 por ahora.


Te aclaro que yo no conozco el codigo de control en cuestion, hay muchisimos y para diferentes cosas.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

overnat

  • Miembro activo
  • **
  • Mensajes: 52
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #7 en: Martes 27 de Diciembre de 2005, 17:52 »
0
he intentado desmontar una unidad asi pero no consigo na de na:

HANDLE hFile;
 
hFile = CreateFile(TEXT("\\.\G:"),    // file to open
                   GENERIC_READ,          // open for reading
                   FILE_SHARE_READ,       // share for reading
                   NULL,                  // default security
                   OPEN_EXISTING,         // existing file only
                   FILE_ATTRIBUTE_NORMAL, // normal file
                   NULL);                 // no attr. template
 
if (hFile == INVALID_HANDLE_VALUE)
{
    GetLastError();
   MessageBox("Hay algun error en el Handle");

}   

  unsigned long  FSCTL_DISMOUNT_VOLUME;
LPDWORD lpBytesReturned;

DeviceIoControl(hFile, FSCTL_DISMOUNT_VOLUME,NULL,0,NULL,0,lpBytesReturned,NULL);

overnat

  • Miembro activo
  • **
  • Mensajes: 52
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #8 en: Martes 27 de Diciembre de 2005, 17:56 »
0
tienes razon en lo de que no estoy capacitado , pero si no pregunto , nunca lo estaré asi que aqui estoy dando un poquillo la lata jeje.



Seguire investigando haber que consigo.

Es que estoy un poquillo harto de los programas de gestion que normalmente , tengo que hacer .

y quiero cambiar un poco .


Salu2 y Gracias por todo

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #9 en: Martes 27 de Diciembre de 2005, 17:57 »
0
Asi nos vamos a volver locos ... ¿Tenes msn?

Desde muy lejos segun la MSDN veo que el problema puede estar en que no abris el handle con FILE_SHARE_WRITE, solo lo haces con FILE_SHARE_READ.

"The application must also specify the FILE_SHARE_READ and FILE_SHARE_WRITE flags in the dwShareMode parameter of CreateFile."

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

overnat

  • Miembro activo
  • **
  • Mensajes: 52
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #10 en: Martes 27 de Diciembre de 2005, 18:00 »
0
no tengo msn No me mola , pero si hay que instalarlo se instala.


 :hola:


 :smartass:  :comp:

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #11 en: Martes 27 de Diciembre de 2005, 18:01 »
0
Cita de: "overnat"
no tengo msn No me mola , pero si hay que instalarlo se instala.
Y ... es que por aca terminariamos con 2000 mensajes.

Ya vi tambien que el nombre de la unidad esta mal puesto deberia ser asi:
"\\\\.\\E:" notese que esto es por C la cadena seria \\.\E:

Y la funcion MessageBox tiene 4 argumentos no 1.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

overnat

  • Miembro activo
  • **
  • Mensajes: 52
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #12 en: Martes 27 de Diciembre de 2005, 18:08 »
0
voy a por msn

El Path del handle estaba mal ya lo cambie , pero me sigue sin desmontar .


Ahora no me da error del handle , pero tampoco desmonta .

El messagebox ya se que tiene 4 parametros , pero como asi no me sa error y me tira el mensaje pues pa las pruebas , mas rapido.

ahora vuelto con msn

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #13 en: Martes 27 de Diciembre de 2005, 18:10 »
0
Cita de: "overnat"
voy a por msn

El Path del handle estaba mal ya lo cambie , pero me sigue sin desmontar .


Ahora no me da error del handle , pero tampoco desmonta .

El messagebox ya se que tiene 4 parametros , pero como asi no me sa error y me tira el mensaje pues pa las pruebas , mas rapido.

ahora vuelto con msn
El parametro para devolver el tamaño tambien esta mal, estas pasando un valor indefinido, tendrias que pasar el puntero a una variable de tipo DWORD.

Código: Text
  1.  
  2. DWORD lpBytesReturned = 0;
  3. DeviceIoControl(hFile, FSCTL_DISMOUNT_VOLUME,NULL,0,NULL,0,&lpBytesReturned,NULL);
  4.  
  5.  

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

overnat

  • Miembro activo
  • **
  • Mensajes: 52
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #14 en: Martes 27 de Diciembre de 2005, 18:18 »
0
ya tengo msn mi dire es overnat@overnat.com

overnat

  • Miembro activo
  • **
  • Mensajes: 52
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #15 en: Martes 27 de Diciembre de 2005, 18:20 »
0
eres tu ventaja?

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #16 en: Martes 27 de Diciembre de 2005, 18:20 »
0
Cita de: "overnat"
ya tengo msn mi dire es overnat@overnat.com
¿Estas online?

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

overnat

  • Miembro activo
  • **
  • Mensajes: 52
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #17 en: Martes 27 de Diciembre de 2005, 18:21 »
0
sip

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #18 en: Martes 27 de Diciembre de 2005, 18:21 »
0
Cita de: "overnat"
eres tu ventaja?
Obviamente ... ¿Quien va a tener tu direccion que acabas de sacar sino?

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pregunta Sobre Deviceiocontrol
« Respuesta #19 en: Martes 27 de Diciembre de 2005, 18:50 »
0
Bueno, resumiendo para el que alguna vez se interese por este tema, no existe ningun codigo de control para hacer una particion read only.

El codigo que tiene overnat incluye un driver de tipo filtro que se encarga de denegar la escritura.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.