/* serial.h: obtiene el n£mero de serie de la unidad C: */
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#define REGS struct SREGS sregs; union REGS
#define INT(i,r) int86x((i), (r), (r), &sregs)
#define SEG(p) ((unsigned int)(((long)p)>>16))
#define OFS(p) ((unsigned int)(p))
#define __PACKED__
/*
INT 21,69 - Get/Set Disk Serial Number _
________________________________________
(Undocumented DOS 4+)
AH = 69h
AL = 00h get serial number
= 01h set serial number
BL = drive (0 = default, 1=A:, 2 = B:, ... )
DS:DX = buffer to contain extended BIOS Parameter Block BPB, AL=0)
= disk information to set of the form:
Offset Size Description
--------------------------------------------------------------
00 word info level (zero)
02 dword disk serial number (binary)
06 11bytes volume label or "NO NAME " if not present
11 8bytes filesystem type string "FAT12 " or "FAT16 "
returns:
CF = set on error
AX = error code if CF set
= 01h network drive not supported
= 05h no extended BPB found on disk
CF = clear if successful and value in AX is destroyed
AL = 00h buffer filled from Extended BPB on disk
= 01h disk Extended BPB updated from buffer
DS:DX = pointer to returned data, when AL=0
_ copies data from Extended BIOS Param