#include "transport.hxx" int main (int argc,char *argv[]) { Scsi_Command cmd; unsigned char buf[128],erb=0; int err,i,rdonly=0; const char *dev=NULL; for (i=1;i0 && (dvd_C0[4]&0x02)) { printf ("The disc is write protected already.\n"); break; } else if (rdonly<0 && !(dvd_C0[4]&0x02)) { printf ("The disc is unprotected already.\n"); break; } memset (dvd_C0,0,sizeof(dvd_C0)); dvd_C0[1]=6; if (rdonly>0) dvd_C0[4]|=2; // "PWP" on else dvd_C0[4]&=~2; // "PWP" off cmd[0]=0xBF; // SEND DVD STRUCTURE cmd[7]=0xC0; cmd[9]=sizeof(dvd_C0); cmd[11]=0; if ((err=cmd.transport(WRITE,dvd_C0,sizeof(dvd_C0)))) { sperror("SEND DVD STRUCTURE#C0",err); return 1; } // Verify... cmd[0]=0xAD; // READ DVD STRUCTURE cmd[7]=0xC0; cmd[9]=sizeof(dvd_C0); cmd[11]=0; if ((err=cmd.transport(READ,dvd_C0,sizeof(dvd_C0)))) { sperror("READ DVD STRUCTURE#C0",err); return 1; } printf ("Persistent Write Protection is %s\n", dvd_C0[4]&0x02 ? "on" : "off"); } while (0); return 0; }