C/Visual C - ayuda con el serial de disquete

 
Vista:

ayuda con el serial de disquete

Publicado por tatis (1 intervención) el 13/09/2002 05:32:36
hola

alguien podria hacerme el favor de decirme como sacar el serial interno de un disquete para luego mostrarlo en pantalla.

agradeceria el codigo fuente o que funcion debo emplear para obtener ese dato.

gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Obtener el número de serie de un disquete

Publicado por Alejandro (913 intervenciones) el 19/03/2025 19:52:10
Para obtener el número de serie de un disquete en un entorno Windows, puedes utilizar la API de Windows. A continuación, te muestro cómo hacerlo utilizando la función `DeviceIoControl` junto con `IOCTL_DISK_GET_DRIVE_LAYOUT_EX` para acceder a la información del disco.

Código de ejemplo



Aquí tienes un ejemplo de cómo obtener el número de serie de un disquete y mostrarlo en pantalla:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <windows.h>
#include <stdio.h>
 
void GetFloppySerialNumber() {
    HANDLE hDevice = CreateFile(
        L"\\\\.\\A:",                // Ruta del disquete (A: o B:)
        GENERIC_READ,               // Acceso de lectura
        FILE_SHARE_READ | FILE_SHARE_WRITE, // Compartir acceso
        NULL,                       // Sin seguridad
        OPEN_EXISTING,             // Abrir dispositivo existente
        0,                          // Sin atributos
        NULL);                     // Sin plantilla
 
    if (hDevice == INVALID_HANDLE_VALUE) {
        printf("Error al abrir el disquete\n");
        return;
    }
 
    // Estructura para almacenar información del disco
    DWORD bytesReturned;
    BYTE buffer[512]; // Buffer para almacenar el número de serie
    if (DeviceIoControl(
            hDevice,
            IOCTL_DISK_GET_DRIVE_LAYOUT_EX,
            NULL,
            0,
            &buffer,
            sizeof(buffer),
            &bytesReturned,
            NULL)) {
        // Aquí puedes procesar el buffer para extraer el número de serie
        // En este caso, asumimos que el número de serie está en la posición adecuada
        // (esto puede variar según el formato del disquete)
        printf("Número de serie del disquete: %02X%02X%02X%02X\n",
               buffer[0], buffer[1], buffer[2], buffer[3]);
    } else {
        printf("Error al obtener el número de serie\n");
    }
 
    CloseHandle(hDevice);
}
 
int main() {
    GetFloppySerialNumber();
    return 0;
}

Notas importantes:



1. Ruta del dispositivo: Asegúrate de que la ruta del dispositivo sea correcta. En este caso, se utiliza `\\\\.\\A:` para acceder al disquete en la unidad A. Si estás utilizando otra unidad, cámbiala en consecuencia.

2. Número de serie: El código anterior asume que el número de serie se encuentra en los primeros bytes del buffer. Dependiendo del formato del disquete, es posible que necesites ajustar la forma en que se extrae el número de serie.

3. Permisos: Asegúrate de ejecutar tu programa con los permisos necesarios para acceder al hardware.

4. Compilación: Este código debe ser compilado en un entorno que soporte la API de Windows, como Visual Studio.

Recursos adicionales



Para más información sobre las funciones y estructuras utilizadas, puedes consultar la documentación de Microsoft (https://docs.microsoft.com/en-us/windows/win32/api/).

Con este código, deberías poder obtener y mostrar el número de serie de un disquete en tu aplicación. ¡Buena suerte, Tatis!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar