ReactOS  0.4.14-dev-98-gb0d4763
iso.h File Reference
#include <pshpack1.h>
#include <poppack.h>
Include dependency graph for iso.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _DIR_RECORD
 
struct  _VD_HEADER
 
struct  _PVD
 
struct  ISO_FILE_INFO
 

Typedefs

typedef struct _DIR_RECORD DIR_RECORD
 
typedef struct _DIR_RECORDPDIR_RECORD
 
typedef struct _VD_HEADER VD_HEADER
 
typedef struct _VD_HEADERPVD_HEADER
 
typedef struct _PVD PVD
 
typedef struct _PVDPPVD
 
typedef struct ISO_FILE_INFOPISO_FILE_INFO
 

Functions

const DEVVTBLIsoMount (ULONG DeviceId)
 

Typedef Documentation

◆ DIR_RECORD

Definition at line 45 of file iso.h.

◆ PDIR_RECORD

Definition at line 45 of file iso.h.

◆ PISO_FILE_INFO

◆ PPVD

typedef struct _PVD * PPVD

Definition at line 88 of file iso.h.

◆ PVD

typedef struct _PVD PVD

Definition at line 88 of file iso.h.

◆ PVD_HEADER

Definition at line 55 of file iso.h.

◆ VD_HEADER

Definition at line 55 of file iso.h.

Function Documentation

◆ IsoMount()

const DEVVTBL* IsoMount ( ULONG  DeviceId)

Definition at line 495 of file iso.c.

496 {
498  PPVD Pvd = (PPVD)Buffer;
500  ULONG Count;
502 
503  TRACE("Enter IsoMount(%lu)\n", DeviceId);
504 
505  //
506  // Read The Primary Volume Descriptor
507  //
508  Position.HighPart = 0;
509  Position.LowPart = 16 * SECTORSIZE;
510  Status = ArcSeek(DeviceId, &Position, SeekAbsolute);
511  if (Status != ESUCCESS)
512  return NULL;
513  Status = ArcRead(DeviceId, Pvd, SECTORSIZE, &Count);
514  if (Status != ESUCCESS || Count < sizeof(PVD))
515  return NULL;
516 
517  //
518  // Check if PVD is valid. If yes, return ISO9660 function table
519  //
520  if (Pvd->VdType == 1 && RtlEqualMemory(Pvd->StandardId, "CD001", 5))
521  {
522  TRACE("IsoMount(%lu) success\n", DeviceId);
523  return &Iso9660FuncTable;
524  }
525 
526  return NULL;
527 }
Definition: arc.h:32
static COORD Position
Definition: mouse.c:34
_Inout_ __drv_aliasesMem PSLIST_ENTRY _Inout_ PSLIST_ENTRY _In_ ULONG Count
Definition: exfuncs.h:1015
ULONG ARC_STATUS
Definition: arc.h:4
Definition: iso.h:59
smooth NULL
Definition: ftsmooth.c:416
Definition: bufpool.h:45
CHAR StandardId[5]
Definition: iso.h:62
#define TRACE(s)
Definition: solgame.cpp:4
NTSYSAPI ULONG NTAPI RtlEqualMemory(CONST VOID *Source1, CONST VOID *Source2, ULONG Length)
#define SECTORSIZE
Definition: iso.c:27
ARC_STATUS ArcRead(ULONG FileId, VOID *Buffer, ULONG N, ULONG *Count)
Definition: fs.c:236
unsigned char UCHAR
Definition: xmlstorage.h:181
struct _PVD * PPVD
Definition: iso.h:88
ARC_STATUS ArcSeek(ULONG FileId, LARGE_INTEGER *Position, SEEKMODE SeekMode)
Definition: fs.c:243
Status
Definition: gdiplustypes.h:24
unsigned int ULONG
Definition: retypes.h:1
UCHAR VdType
Definition: iso.h:61
const DEVVTBL Iso9660FuncTable
Definition: iso.c:485

Referenced by ArcOpen().