Home | Kontakt | Sitemap
f

Start

Über mich

Kontakt

Sitemap

Lizenz

Anleitungen

DVD, miniDVD

SVCD

Audio, Audio-CD (CD-DA)

AVI

Software

Von Freunden und Bekannten

Eigene Programme

Programmierung

Delphi

Lazarus

Delphi/Lazarus

Projekte

MPEG-1/2 Video

Optische Laufwerke

Audio-CD (CDDA)

Raspberry Pi Dashcam

Verschiedenes

MPEG 2 Schnitt

Project X

VCD Easy

Hardlinks

Windows

Links

Software

Projekte | Optische Laufwerke - Hardware - Capabilities

Capabilities

MODE SENSE (10) Command - Operation Code $5A CD Capabilities and Mechanical Status - Page Code $2A

Multi-Media Commands - 6 Kapitel 6.12. Das MODE SENSE (10) Command gibt verschiedene Parameter des Gerätes zurück. Für die Beschreibung des Commands wird auf die SCSI Primary Commands - 3 (SPC-3) verwiesen. Dort findet sich in Kapitel 6.10 MODE SENSE (10) Command eine Beschreibung des Command Descriptor Blocks, wobei im weiteren Bezug auf Kapitel 6.9 MODE SENSE (6) command genommen wird.

Der MODE SENSE (10) Command Descriptor Block:

 76543210
0Operation Code = $5A
1ReserviertLLBAADBDReserviert
2PCPAGE CODE
3SUBPAGE CODE
4Reserviert
5
6
7Allocation Length
8
9Control

Die Werte:

Byte 0: Operation Code - $5A

Byte 1: LLBAA - Long LBA Accepted
Long Logical Block Addressing - Ist theoretisch bei einer Speicherkapazität von über 2,1 Terabyte notwendig. Praktisch bei XP wohl schon bei 990 Gigabyte.

Byte 1: DBD - Disable Block Descriptor
Bei Wert 0 werden keine oder mehrere Block Descriptors in den MODE SENSE Data zurückgegeben. Bei Wert 1 werden keine Block Descriptoren zurückgegeben.

Byte 2: PC - Page Control

Byte 2 und 3: Page Code und Subpage Code
Die Codes sind in SCSI Primary Commands - 3 (SPC-3) Anhang D.6 und darin in Tabelle D.12 aufgeführt. Für CD Capabilities and Mechanical Status ist die Page $2A und die Sub Page $00.

Byte 7 und 8: Länge der Antwortstruktur

Byte 9: Control - ?

Antwortstruktur

Als Antwort erhält man eine Mode Parameter List, welche vom Gerätetyp und dem unterstützten Multi Media Command Standard abhängig ist. Sie beginnt mit einem acht Byte langen Mode Parameter (10) Header. Diesem schließt sich bis MMC-2 eine 22 Byte lange Struktur an. In MMC-3 wurde diese Struktur erweitert und kann deutlich länger sein. Deshalb wird die Länge mit $FF angegeben. Die tatsächliche Länge kann dem Mode Parameter (10) Header entnommen und der Aufruf muss gegebenenfalls mit korrigiertem Wert wiederholt werden. Eine Beschreibung des Mode Parameter (10) Header kann den Multi-Media Commands - 6 Kapitel 7.2 wie folgt entnommen werden:

 76543210
0Mode Data Length
1
2Reserviert
3
4
5
6Block Descriptor Length = 0
7

Mode Data Length
Gibt in Bytes an, wie lang die folgende Datenstruktur ist.

Block Descriptor Length
Die Länge ist 0, da Multimediageräte keine Block Descriptors unterstützen. Für ältere SCSI logical Units sind es 8.

CD/DVD Capabilities and Mechanical Status Page (Page Code 2Ah)
Die Beschreibung der CD/DVD Capabiblities and Mechanical Status Page (Page Code $2A) findet sich in den SCSI Multimedia Commands 3 (MMC-3) in Kapitel 6.3.11:

 76543210
0PSReserviertPage Code ($2A)
1Page Length (28 + 4 * (maximum number of n))
2ReservedDVD-RAM ReadDVD-R ReadDVD-ROM ReadMethod 2 CD-RW ReadCD-R Read
3ReservedDVD-RAM WriteDVD-R WriteReservedTest Write CD-RW WriteCD-R Write
4BUFMulti SessionMode2 Form2Mode2 Form1Digital Port (2) Digital Port (1)CompositeAudio Play
5Read Bar CodeUPCISRCC2 Pointers supportedRW Deinter- leaved & corrected RW SupportedCD-DA Stream is AccurateCD-DA Cmds Supported
6Loading Mechanism TypeReservedEject (Individual /Magazine) Prevent JumperLock StateLock
ReservedRW in Lead-InSide Change CapableS/W Slot Selection (SSS) Changer Supports Disc PresentSeparate Channel MuteSeparate Volume Levels
8Maximum Read Speed Supported (Veraltet)
9
10Number of Volume Levels Supported
11
12Buffer Size Supported
13
14Current Reed Speed Selected (Veraltet)
15
16Reserviert
17ReserviertLengthLSBFRCKBCKFReserviert
18Maximum Write Speed (Veraltet)
19
20Current Write Speed Selected (Veraltet)
21
22Copy Management Revision Supported
23
24Reserved
25
26
27ReservedRotation Control Selected
28Current Write Speed Selected
29
30Number of Logical Unit Write Speed Performance Descriptor Tables (n)
31
32Logical Unit Write Speed Performance Descriptor Block #1
33
34
35
36Logical Unit Write Speed Performance Descriptor Block #2
37
38
39
.
.
 
n * 4 + 28Logical Unit Write Speed Performance Descriptor Block #n
n * 4 + 29
n * 4 + 30
n * 4 + 31
 Padding

PS (Parameters Savable): Gibt an, ob die logische Einheit die mode page an einer hersteller spezifischen Speicherstelle speichern kann.

Page Code: Code der zurückgegebenenen Seite.

Page Length: Gibt die noch folgenden Bytes an.

DVD-RAM Read: Gibt an, ob das Gerät DVD-RAM Medien lesen kann.

DVD-R Read: Gibt an, ob das Gerät DVD-R Medien lesen kann.

DVD-ROM Read: Gibt an,ob das Gerät DVD-ROM Medien lesen kann.

Method 2: Gibt an, ob das Lesen von fixed packed tracks unterstützt wird.

CD-RW Read: Gibt an, ob CD-RW gelesen werden können.

CD-R Read: Gibt an, ob CD-R gelesen werden können.

DVD-RAM Write: Gibt an, ob DVD-RAM Medien beschrieben werden können.

DVD-R Write: Gibt an, ob DVD-R Medien beschrieben werden können.

Test Write: Gibt an, ob die Test Write function unterstützt wird.

CD-RW Write: Gibt an, ob CD-RW Medien beschrieben werden können.

CD-R Write: Gibt an, ob CD-R Medien beschrieben werden können.

BUF: Gibt an, ob für CD-R/W Buffer Underrun freie Aufnahmen unterstützt werden.

Multi Session: Gibt an, ob CDs mit mehreren Sessions gelesen werden können.

Mode2 Form2: gibt an, ob CD-Sektoren im Mode 2 Form 2 Format gelesen werden können.

Mode2 Form1: gibt an, ob CD-Sektoren im Mode 2 Form 1 Format gelesen werden können.

Digital Port (2): Gibt an, ob eine Digitalausgabe nach IEC958 auf dem Anschluss 2 unterstützt wird.

Digital Port (1): Gibt an, ob eine Digitalausgabe nach IEC958 auf dem Anschluss 1 unterstützt wird.

Composite: Gibt an, ob ein Composite Audio- und Videostream an einem unabhängigen Digitalport wiedergegeben werden können.

Audio Play: Gibt an, ob Analog Audio abgespielt werden kann.

Read Bar Code: Gibt an, ob das Lesen des Disc Bar Code und die Rückgabe der Information über den READ DISC INFORMATION Command unterstützt wird.

UPC: Gibt an, ob das Lesen der Media Catalog Number mit dem READ SUB-CHANNEL Command unterstützt werden.

ISRC: Gibt an, ob das Auslesen von International Standard Recording Code Information über den READ SUB-CHANNEL Command unterstützt wird.

C2 Pointers supported: Gibt an, ob C2 Fehlerpointer und C2 Blockfehlerflags über den READ CD Command unterstützt wird.

R-W Sub Channels Deinterleaved & corrected: Gibt an, ob die R-W Sub-Channels mit dem READ CD Command mit unverschachtelten und korrigierten Daten gelesen werden können.

Sub Channels R-W Reading Supported: gibt an, ob die R-W Sub-Channel mit dem READ CD Command gelesen werden können.

CD-DA Stream is Accurate Gibt an, ob nach einem Lesefehler weitergelesen werden kann.

CD-DA Cmds Supported: Gibt an, das Lesen von CD Audiosektoren mit dem READ CD Command unterstützt wird.

Loading Mechanism Type: Gibt den Typ des Mechanismus an:

765Loading Mechanism Type
000Caddy type loading mechanism
001Tray type loading mechanism
010Popup type loading mechanism
011Reserviert
100Changer with individually changeable discs
101Changer using a Magazine mechanism
110Reserviert
111Reserviert

Eject (Individual/Magazine): Gibt an, ob der Auswurf der Medien über das START STOP UNIT Command mit dem LoEj Bit unterstützt wird. Wenn es sich um einen Wechsler mit Magazinen handelt, gibt es an, ob dieses Magazin entfernt werden kann.

Prevent Jumper: Gibt an, ob das Gerät einen physikalischen Schalter zum Sperren für den Auswurf besitzt.

Lock State: Wenn Lock gesetzt ist, gibt es an, ob das Laufwerk gesperrt ist.

Lock: Gibt an, ob das Sperren des Gerät mit den PREVENT ALLOW MEDIUM REMOVAL Command unterstützt wird.

RW in Lead-In: Gibt an, ob die rohe R-W Sub-Channel Informationen aus dem Lead-In gelesen werden können.

Side Change Capable: gibt an, ob das Gerät zweiseitige Medien unterstützt. Dies trifft normalerweise nur für Wechsler zu.

Software Slot Selection: Kontrolliert das Verhalten des LOAD/UNLOAD MEDIUM Command.

Changer Supports Disc Present: Gibt an, ob das Gerät einen Wechsler enthält.

Separate Channel Mute: Gibt an, ob die unabhängige Stummschaltung eines jeden Audiokanals über die CD Audio Control Page unterstützt wird.

Separate Volume Levels: Gibt an, ob die Lautstärkeregelung für jeden Kanal über die Audio control Page unterstützt wird.

Maximum Read Speed Supported: Die höchste unterstützte Lesegeshwindigkeit. Sie ist vom eingelegten Medium abhängig. Obwohl als veraltet bezeichnet, wird sie meist noch angegeben.

Number of Volume Levels Supported: Gibt die Anzahl der unterstützten diskrete Lautstärkelevel an. Bei Audio an und aus sind dies zwei.

Buffer Size Supported: Gibt die Größe des Speicherpuffers in kByte an.

Current Reed Speed Selected: Die gegenwärtig eingestellte Lesegeschwindigkeit. Sie ist vom eingelegten Medium abhängig. Obwohl als veraltet bezeichnet, wird sie meist noch angegeben.

Length, LSBF, RCK, BCKF: Die Flags sind nur gültig, wenn Digital Port (1) oder Digital Port (2) gesetzt sind.

Length: Die Flags sind nur gültig, wenn Digital Port (1) oder Digital Port (2) gesetzt sind.

LSBF: Die Flags sind nur gültig, wenn Digital Port (1) oder Digital Port (2) gesetzt sind.

RCK: Die Flags sind nur gültig, wenn Digital Port (1) oder Digital Port (2) gesetzt sind.

Maximum Write Speed: Die höchste unterstützte Schreibgeschwindigkeit. Sie ist vom eingelegten Medium abhängig. Obwohl als veraltet bezeichnet, wird sie meist noch angegeben.

Copy Management Revision Supported Gibt die Revision des Kopierschutzschemas an. Wenn für DVD CSS pder DPPM unterstützt wird, soll der Wert $0001 betragen.

Rotation Control Selected: Gibt an, wie die Rotation controlliert wird:

WertBeschreibung
00bMedia default rotation control
01bCAV
AndereReserviert

Current Write Speed Selected: Die gegenwärtig eingelegte Schreibgeschwindigkeit. Sie ist vom eingelegten Medium abhängig. In der alten Version der Code Page belegt das Feld die Bytes 20 und 21. In der neuen Version wird es als veraltet bezeichnet, wird jedoch meist angegeben. In der neuen Version belegt das Feld die Bytes 28 und 29. Hinzu ist das Feld Rotation Control Selected in Byte 27 gekommen.

Number of Logical Unit Write Speed Performance Descriptor Tables (n): Gibt die Anzahl der folgenden Logical Unit Write Speed Performance Descriptor Blocks an.

Logical Unit Write Speed Performance Descriptor Block - Struktur:

 76543210
0Reserved
1ReservedRotation Control
2Write Speed Supported (kbytes/sec)
3

Hier bedeutet die Rotation Control:

WertBeschreibung
00bCLV
01bCAV
10bReserviert
11b

Padding: Sind Bytes zur Auffüllung.

Deklarationen

{
*  Für die Auswertung.
}
 
type
  TModeParameterHeader = record
    ModeDataLength  : Word;
    BlockDescLength : Word;
  end;
 
type
  TLogUnitWriteSpeedPerfDescBlock = record
    Rotation   : Byte;
    WriteSpeed : Word;
  end;
 
type
  TCapabilities = record
    PS           : Boolean;
    PageCode     : Byte;
    PageLength   : Byte;
    DVDRAMRead   : Boolean;
    DVDRRead     : Boolean;
    DVDROMRead   : Boolean;
    Method2      : Boolean;
    CDRWRead     : Boolean;
    CDRRead      : Boolean;
    DVDRAMWrite  : Boolean;
    DVDRWrite    : Boolean;
    TestWrite    : Boolean;
    CDRWWrite    : Boolean;
    CDRWrite     : Boolean;
    BUF          : Boolean;
    MultiSession : Boolean;
    Mode2Form2   : Boolean;
    Mode2Form1   : Boolean;
    DigitalPort2 : Boolean;
    DigitalPort1 : Boolean;
    Composite    : Boolean;
    AudioPlay    : Boolean;
    ReadBarCode  : Boolean;
    UPC          : Boolean;
    ISRC         : Boolean;
    C2PSup       : Boolean;
    RWDeIntlvd   : Boolean;
    RWSupported  : Boolean;
    CDDAStrIsAcc : Boolean;
    CDDACmdsSupp : Boolean;
    LoadMechType : Byte;
    Eject        : Boolean;
    PrevJumper   : Boolean;
    LockState    : Boolean;
    Lock         : Boolean;
    RWLeadIn     : Boolean;
    SideChCap    : Boolean;
    SWSlotSel    : Boolean;
    ChSDiscPres  : Boolean;
    SepChMute    : Boolean;
    SepVolLvl    : Boolean;
    NOfVolLvlSup : Word;
    BufSizeSup   : Word;
    Length       : Byte;
    LSBF         : Boolean;
    RCK          : Boolean;
    BCKF         : Boolean;
    CpyManRevSup : Word;
    RotCtrlSel   : Byte;
    CurWriSpeSel : Word;
    NumLUWSPDT   : Word;
    LUWSPDBlock  : array of TLogUnitWriteSpeedPerfDescBlock;
    {  Ab MMC-3 als veraltet bezeichnet  }
    SpeedReadMax  : Word;
    SpeedReadCur  : Word;
    SpeedWriteMax : Word;
    SpeedWriteCur : Word;
  end;
 
type
  TWriteSpeedDesc = record
    Rotation   : String;
    WriteSpeed : String;
  end;
 
  ...
 
{
*  Für den Befehl.
}
 
const
  SCSIOP_MODE_SENSE10 = $5A;
  SCSIPC_CAPABILITIES = $2A;
 
type
  TMODE_SENSE10_CDB = record
    OperationCode    : Byte;
    PC_PageCode      : Byte;
    SubpageCode      : Byte;
    AllocationLength : Word;
  end;
 
type
  TCAPABILITIES_MECHANICAL_STATUS = record
    ModeParameterHeader : array[0..7] of Byte;
    Data                : array[0..$FF] of Byte;
  end;
  PCAPABILITIES_MECHANICAL_STATUS = ^TCAPABILITIES_MECHANICAL_STATUS;

Ausführung

Nach dem Ausfüllen des Command Descriptors Blockes wird die Abfrage ausgeführt und die Antwort ausgewertet. Es werden auch die als veraltet bezeichneten Felder ausgewertet.

function TOptDrives.ReadCapabilities(aDevice: THandle): Boolean;
{*******************************************************************************
*  Eigenschaften und mechanischer Status.
}
var
  MODE_SENSE10_CDB    : TMODE_SENSE10_CDB;
  pCapaMechStatus     : PCAPABILITIES_MECHANICAL_STATUS;
  ModeParameterHeader : TModeParameterHeader;
  aCDB                : Array of Byte;
  n                   : Integer;
begin
  Result := False;
  {
  *  Eigenschaften initialisieren.
  }
  FillChar(FDrive[FActive].Capabilities, SizeOf(FDrive[FActive].Capabilities), $00);
  {
  *  Den Command Descriptor Block füllen.
  }
  ZeroMemory(@MODE_SENSE10_CDB, SizeOf(MODE_SENSE10_CDB));
  MODE_SENSE10_CDB.OperationCode    := SCSIOP_MODE_SENSE10;
  MODE_SENSE10_CDB.PC_PageCode      := SCSIPC_CAPABILITIES;
  MODE_SENSE10_CDB.AllocationLength := SizeOf(TCAPABILITIES_MECHANICAL_STATUS);
  {
  *  Den Command Descriptor Block übertragen.
  }
  SetLength(aCDB, 10);
  aCDB[0] := MODE_SENSE10_CDB.OperationCode;
  aCDB[2] := MODE_SENSE10_CDB.PC_PageCode;
  aCDB[3] := MODE_SENSE10_CDB.SubpageCode;
  aCDB[7] := HiByte(MODE_SENSE10_CDB.AllocationLength);
  aCDB[8] := LoByte(MODE_SENSE10_CDB.AllocationLength);
  {
  *  Befehl ausführen
  }
  GetMem(pCapaMechStatus, SizeOf(TCAPABILITIES_MECHANICAL_STATUS));
  if GET_SCSI_PASS_THROUGH_DIRECT(aDrive, aCDB, pCapaMechStatus,
                                  SizeOf(TCAPABILITIES_MECHSTATUS))
  then begin
    with ModeParameterHeader
    do begin
      ModeDataLength  := CAPABILITIES_MECHSTATUS.ModeParameterHeader[0] shl 8 or
                         CAPABILITIES_MECHSTATUS.ModeParameterHeader[1];
      BlockDescLength := CAPABILITIES_MECHSTATUS.ModeParameterHeader[6] shl 8 or
                         CAPABILITIES_MECHSTATUS.ModeParameterHeader[7];
    end;
    {
    *  Prüfen, ob nach dem Mode Parameter Header Daten folgen.
    }
    if ModeParameterHeader.ModeDataLength > 6 then
    with FDrive[FActive].Capabilities
    do begin
      PS       := pCapaMechStatus.Data[0] and $80 > 0;
      PageCode := pCapaMechStatus.Data[0] and $3F;
      {
      *  Richtigkeit des PageCodes prüfen.
      }
      ifPageCode = SCSIPC_CAPABILITIES
      then begin
        PageLength := pCapaMechStatus.Data[1];
        {
        *  Prüfen, ob die Länge im gültigen Bereich liegt.
        }
        if PageLength > 0
        then begin
          DVDRAMRead    := pCapaMechStatus.Data[2] and $20 > 0;
          DVDRRead      := pCapaMechStatus.Data[2] and $10 > 0;
          DVDROMRead    := pCapaMechStatus.Data[2] and $08 > 0;
          Method2       := pCapaMechStatus.Data[2] and $04 > 0
          CDRWRead      := pCapaMechStatus.Data[2] and $02 > 0;
          CDRRead       := pCapaMechStatus.Data[2] and $01 > 0;
          DVDRAMWrite   := pCapaMechStatus.Data[3] and $20 > 0;
          DVDRWrite     := pCapaMechStatus.Data[3] and $10 > 0;
          TestWrite     := pCapaMechStatus.Data[3] and $04 > 0;
          CDRWWrite     := pCapaMechStatus.Data[3] and $02 > 0;
          CDRWrite      := pCapaMechStatus.Data[3] and $01 > 0;
          BUF           := pCapaMechStatus.Data[4] and $80 > 0;
          MultiSession  := pCapaMechStatus.Data[4] and $40 > 0;
          Mode2Form2    := pCapaMechStatus.Data[4] and $20 > 0;
          Mode2Form1    := pCapaMechStatus.Data[4] and $10 > 0;
          DigitalPort2  := pCapaMechStatus.Data[4] and $08 > 0;
          DigitalPort1  := pCapaMechStatus.Data[4] and $04 > 0;
          Composite     := pCapaMechStatus.Data[4] and $02 > 0;
          AudioPlay     := pCapaMechStatus.Data[4] and $01 > 0;
          ReadBarCode   := pCapaMechStatus.Data[5] and $80 > 0;
          UPC           := pCapaMechStatus.Data[5] and $40 > 0;
          ISRC          := pCapaMechStatus.Data[5] and $20 > 0;
          C2PSup        := pCapaMechStatus.Data[5] and $10 > 0;
          RWDeIntlvd    := pCapaMechStatus.Data[5] and $08 > 0;
          RWSupported   := pCapaMechStatus.Data[5] and $04 > 0;
          CDDAStrIsAcc  := pCapaMechStatus.Data[5] and $02 > 0;
          CDDACmdsSupp  := pCapaMechStatus.Data[5] and $01 > 0;
          LoadMechType  := pCapaMechStatus.Data[6] and $E0 shr 5;
          Eject         := pCapaMechStatus.Data[6] and $08 > 0;
          PrevJumper    := pCapaMechStatus.Data[6] and $04 > 0;
          LockState     := pCapaMechStatus.Data[6] and $02 > 0;
          Lock          := pCapaMechStatus.Data[6] and $01 > 0;
          RWLeadIn      := pCapaMechStatus.Data[7] and $20 > 0;
          SideChCap     := pCapaMechStatus.Data[7] and $10 > 0;
          SWSlotSel     := pCapaMechStatus.Data[7] and $08 > 0;
          ChSDiscPres   := pCapaMechStatus.Data[7] and $04 > 0;
          SepChMute     := pCapaMechStatus.Data[7] and $02 > 0;
          SepVolLvl     := pCapaMechStatus.Data[7] and $01 > 0;
          SpeedReadMax  := pCapaMechStatus.Data[8] shl 8 or
                           pCapaMechStatus.Data[9];
          NOfVolLvlSup  := pCapaMechStatus.Data[10] shl 8 or
                           pCapaMechStatus.Data[11];
          BufSizeSup    := pCapaMechStatus.Data[12] shl 8 or
                           pCapaMechStatus.Data[13];
          SpeedReadCur  := pCapaMechStatus.Data[14] shl 8 or
                           pCapaMechStatus.Data[15];
          Length        := pCapaMechStatus.Data[17] and $31 shr 4;
          LSBF          := pCapaMechStatus.Data[17] and $08 > 0;
          RCK           := pCapaMechStatus.Data[17] and $04 > 0;
          BCKF          := pCapaMechStatus.Data[17] and $02 > 0;
          SpeedWriteMax := pCapaMechStatus.Data[18] shl 8 or
                           pCapaMechStatus.Data[19];
          SpeedWriteCur := pCapaMechStatus.Data[20] shl 8 or
                           pCapaMechStatus.Data[21];
          CpyManRevSup  := pCapaMechStatus.Data[22] shl 8 or
                           pCapaMechStatus.Data[23];
          RotCtrlSel    := pCapaMechStatus.Data[27] and $03;
          CurWriSpeSel  := pCapaMechStatus.Data[28] shl 8 or
                           pCapaMechStatus.Data[29];
          NumLUWSPDT    := pCapaMechStatus.Data[30] shl 8 or
                           pCapaMechStatus.Data[31];
          {
          *  Blöcke abarbeiten.
          }
          if NumLUWSPDT > 0
          then begin
            SetLength(LUWSPDBlock, NumLUWSPDT);
            for n := 1 to FDrive[FActive].Capabilities.NumLUWSPDT
            do begin
              LUWSPDBlock[n - 1].Rotation
                                := pCapaMechStatus.Data[n * 4 + 29] and $07;
              LUWSPDBlock[n - 1].WriteSpeedSupported
                                := pCapaMechStatus.Data[n * 4 + 30] shl 8 or
                                   pCapaMechStatus.Data[n * 4 + 31];
            end;
          end;
          Result := True;
        end;
      end;
    end;
  end;
  FreeMem(pCapaMechStatus);
end;

Demo, welche diese Funktion nutzt:

Capabilities (podCapabilitie.7z - 294 kb) MD5 (1 kb). Stand: 30. Juni 2013

Änderungen an der Demo

30.06.2013Kleine Überarbeitung und neuer Name.
27.01.2012Hinzu: Als veraltet bezeichnete Felder eingefügt.

Geräteinformationen > Capabilities > DVD Region