FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Mover el cabezal de lectura
Saludos a todos Uds.
Una consulta...¿Es posible manipular el cabezal de lectura de la disketera de tal forma que lo pueda mover a una posicion especifica del diskete a fin de leer directamente en es posicion?...¿El lenguaje de Delphi me permite hacerlo o debo recurrir a rutinas en ensamblador?..Esta consulta y otras que hice al foro, se debe a una solicitud que me hicieron de crear un programa que debe ejecutarse desde un diskete, el programa al ejecutarse calcula diferentes valores los cuales deben ser guardados en el mismo diskete. Asi mismo se me pide evitar que los usuarios del diskete puedan copiarlo el EXE a otros disketes. Para solucionar este problema planeo marcar los disketes fisicamente de tal forma que al ejecutarse el programa este busque la marca....estoy seguro que muchos de Uds. escucharon de esta forma antigua de proteccion y que alguno de Uds. utilizaron para proteger un sistema desarrollado...yo personalmente lo escuche pero nunca lo utilice y hoy tengo la necesidad de explorar este tema...por lo cual les solicito su valiosa ayuda...Se que el sistema no es infalible, pero creo que para los usuarios a los que esta dirigido...les sera dificil hacer una copia simple. Atentamente Carlo |
#2
|
||||
|
||||
Delphi admite ensamblador:
Cita:
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
||||
|
||||
Cita:
Como bien dices, no es infalible, ya que había programas de copia con las opciones para "duplicar sectores defectuosos", pero ya es algo más complicado para determinados usuarios. Revisa éste documento a ver si te es útil: http://support.microsoft.com/default...b;en-us;100027 Aquí puedes encontrar algunos componentes de acceso directo a disco; Revisa limitaciones de sistema operatico y formato (NTFS, FAT, FAT32) a ver si alguno te es útil (desconozco si alguno podrá marcar sectores como defectuosos). Con ésta unit puedes escribir/leer sectores de disco además de otras opciones de formateo: http://www.efg2.com/Lab/Library/Delp...ovicAlfa32.zip
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#4
|
||||
|
||||
Cita:
Gracias por la yuda Carlo |
#5
|
||||
|
||||
Pues como te digo hace tiempo que no programo en en Ensamblador por lo que tendrías que hacer la prueba, lógicamente utilizando una rutina de lectura de sectores, no de escritura por si acaso, en cualquiera caso creo que debieras incluir en dicha función que la unidad a leer o escribir es la unidad A, en Ensamblador = 0, B = 1, C= 2....
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#6
|
||||
|
||||
Cita:
MIl gracias por la yuda Atentamente Carlo |
#7
|
||||
|
||||
Cita:
No se si yo me atrevería a distribuir programas en disquettes a los que me he dedicado a pinchar con agujas determinados sectores.... Cita:
Cita:
Justo por eso esa técnica funciona. Si tienes un disquete original con los sectores A y B malos, al hacer un diskcopy (estandard) el disco resultante tendrá todo igual, pero los sectores A y B no estrarán marcados como malos (ya que es diskcopy copia datos, pero no se dedica a marcar sectores defectuasos en el disco destino); El programa sólo debe comprobar que los sectores A y B son defectuosos en el disco, por eso SÍ funcionará en el disco original y NO funcionará en el disco destino copiado con DiskCopy (porque el disco destino no tendrá como defectuosos los sectores A y B). Cita:
La idea es que el programa pueda comprobar algo en el disco original que en las copias no esté. Si creas un fichero y lo "rompes/malogras" tu programa tampoco podrá leerlo y por lo tanto no sirve; De todas formas vuelvo a decir que distribuir un programa en un disquette del que no se pueden hacer copias y sobre el que te has dedicado a pinchar con una aguja, me parece muy, muy arriesgado.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#8
|
||||
|
||||
DiskCopy, no funciona cuando existen sectores defectuosos, en su momento existian programas copiadores que si eran capaces de copiar estos sectores.
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#9
|
||||
|
||||
Estoy en camino
Cita:
El marcar fisicamente un disco con un aguja...un clavo...o con con cualquier objeto ...me permite crear un daño en la superficie del disco, la otra forma seria marcar el sector o el cluster mediante programa, pero esta marca solo se hace en la FAT, sin embargo los cluster o sectores involucrados estarian fisicamente bien....imagino que con un nuevo formateo el disco queda Ok....Por otro lado...ahora que estoy investigando la estructura de un diskette, descubri que el Cluster 1 no es utilizado, cuando paso el Norton Disk Doctor, este informa que se esta utilizando desde el cluster 2...alguno de Uds. sabe por que el cluster 1 no es utilizado ni tomado en cuenta en el calculo del tamaño del disco?..En cuanto complete las pruebas...se los comunicare y pedire buestra opinio.. Gracias por los comentarios Carlo |
#10
|
||||
|
||||
Cita:
En cuanto a la (1), no le veo vantajas a "romper" físicamente el disco. No puedes reutilizar discos (ni siquiera los de las pruebas que tú hagas) y por otro lado sigo viendo un sistema muy "impreciso" el pinchar el disco con una aguja.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#11
|
||||
|
||||
Cita:
Agradezco mucho tus comentarios. Mi idea es la siguiente: si marco uno o varios clusters por soft este lo hara solo en la FAT, fisicamente la informacion que se encuentre en esos cluster no sera tocada y estara disponible sin importar que la FAT indique lo contrario. De esta forma se podra tener acceso a esa informacion con una lectura directa del cluster... Pero mi idea es la de marcar fisicamente el cluster sin que este tenga informacion. Una verificacion del disco o un nuevo formateo con una herramienta apropiada, marcara los clusters malogrados en la FAT. Hasta este punto tendria un disco con clusters malogrados en la area de datos y con los mismos clusters marcados en la FAT, como no disponibles. Si se utiliza una herramienta de copia de discos y que ademas copie cluster a cluster, creara una copia del disco original, marcando estos clusters como malos en la FAT (del disco copia), por supuesto los clusters fisicamente estaran bien. Entonces al final tengo dos discos: un original con clusters malos marcados en la FAT y sobre el mismo disco y una copia con los mismos clusters marcados...pero solo en la FAT. El programa al iniciar debe verificar los clusters directamente en el disco y no a travez de la FAT. Si en la verificacion de los clusters sucede un error indicaria que es el disco llave (por decirlo de alguna forma) y el sistema continua su trabajo. La idea original de tener un archivo en mi disco y luego marcar el disco con una aguja, tratando de acertarle en los clusters involucrados con el archivo, me evitaba usar rutinas de bajo nivel para leer el disco, ya que el programa para poder inicar su trabajo, solo debia verificar la existencia de ese archivo en el disco, el cual como estaba dañado, en teoria, no podria ser copiado a otro disco. Por supuesto, verificar la existencia de ese archivo en el disco incluia comprobar algunos bytes en posiciones especificas dentro del archivo, de tal forma que esto era una segunda comprobacion de seguridad, es decir no solo se verifica que el archivo xxxxx.xxx este en el disco si no que tambien se verifique ciertos bytes en su interior. Todas estas operaciones se pueden hacer con los comandos de Delphi, tan es asi que lo pude lograr...pero tenia que usar un archivo tan grande como el disco (1.44 mb) y por que? pues para estar seguro que al marcar cualquier posicion en la superficie del disco, le estaba atinando al archivo. Bajo esta forma solo debo utilizar los comandos de acceso a archivos como Seek, etc. Esta forma no funciona (al menos para lo que me piedieron hacer)por que en el mismo disco debo meter el EXE y depues se tiene que guardar los datos generados con el mismo programa. Si primero copio la informacion (mi archivo EXE) y luego marco...puedo atinarle al EXE y por supuesto, todo el plan se malogra. En cambio si en un disco limpio primero marco la superficie con la aguja y despues copia mi EXE, este se copiara en las partes no dañadas (claro esta que antes debo marcar estas posiciones en la FAT de tal forma que Windows no intente copiar el exe en esas posiciones), lo mismo sucedera con la informacion generada con el programa. Pero para hacer esto ya no me sirve los comandos de manejo de archivos de Delphi ya que este debe trabajar con archivos..Es por eso que ahora estoy mirando al Ensamblador y...tiene buena cara para este trabajo...Con esto trato de explicarte (y de paso a todos los amigos del foro) cual es mi plan... Esperando hacerme entender Atentamente Carlo |
|
|
|