cdcb.h
来自「PGP8.0源码 请认真阅读您的文件包然后写出其具体功能」· C头文件 代码 · 共 284 行
H
284 行
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: CDcb.h,v 1.2 2002/08/06 20:09:30 dallen Exp $
____________________________________________________________________________*/
#ifndef Included_CDcb_h // [
#define Included_CDcb_h
_PGP_BEGIN
// Class CDcb
class CDcb
{
NOT_COPYABLE(CDcb)
private:
enum {kDcbSignature = 0x4342};
public:
CDcb(PDCB pDcb = NULL) : mWeCreated(FALSE), mDcb(pDcb) { }
~CDcb();
PGPBoolean WeCreated() const {return mWeCreated;}
operator DCB&() {return *mDcb;}
operator const DCB&() const {return *mDcb;}
operator DCB_COMMON&() {return (*mDcb).DCB_cmn;}
operator const DCB_COMMON&() const {return (*mDcb).DCB_cmn;}
operator PDCB() {return mDcb;}
operator const PDCB() const {return mDcb;}
operator PDCB_COMMON() {return &mDcb->DCB_cmn;}
operator const PDCB_COMMON() const {return &mDcb->DCB_cmn;}
DCB_COMMON& Common() const
{
return mDcb->DCB_cmn;
}
DCB_BLOCKDEV& Bdd() const
{
return mDcb->DCB_bdd;
}
PDCB& PhysicalDcb() const
{
return *reinterpret_cast<PDCB *>(&Common().DCB_physical_dcb);
}
unsigned long& ExpansionLength() const
{
return Common().DCB_expansion_length;
}
DCB_cd_entry *& CalldownList() const
{
return *reinterpret_cast<DCB_cd_entry **>(&Common().DCB_ptr_cd);
}
PDCB_COMMON& NextDcb() const
{
return *reinterpret_cast<PDCB_COMMON *>(&Common().DCB_next_dcb);
}
PDCB_COMMON& NextLogicalDcb() const
{
return *reinterpret_cast<PDCB_COMMON *>(
&Common().DCB_next_logical_dcb);
}
PGPUInt8& Drive() const
{
return Common().DCB_drive_lttr_equiv;
}
PGPUInt8& UnitNumber() const
{
return Common().DCB_unit_number;
}
PGPUInt16& TsdFlags() const
{
return Common().DCB_TSD_Flags;
}
PVRP& Vrp() const
{
return *reinterpret_cast<PVRP *>(&Common().DCB_vrp_ptr);
}
unsigned long& DemandFlags() const
{
return Common().DCB_dmd_flags;
}
unsigned long& DeviceFlags() const
{
return Common().DCB_device_flags;
}
unsigned long& DeviceFlags2() const
{
return Common().DCB_device_flags2;
}
unsigned long& PartitionStart() const
{
return Common().DCB_Partition_Start;
}
PGPUInt8& BlockShift() const
{
return Common().DCB_apparent_blk_shift;
}
PGPUInt8& PartitionType() const
{
return Common().DCB_partition_type;
}
PGPUInt16& Sig() const
{
return Common().DCB_sig;
}
PGPUInt8& DeviceType() const
{
return Common().DCB_device_type;
}
PGPUInt8& BpbFlags() const
{
return Common().DCB_disk_bpb_flags;
}
PGPUInt16& UserDrive() const
{
return Common().DCB_user_drvlet;
}
unsigned long& MaxTransferLength() const
{
return mDcb->DCB_max_xfer_len;
}
PGPUInt64& SectorCount() const
{
return *reinterpret_cast<PGPUInt64 *>(&mDcb->DCB_actual_sector_cnt);
}
unsigned long& BlockSize() const
{
return mDcb->DCB_actual_blk_size;
}
unsigned long& Heads() const
{
return mDcb->DCB_actual_head_cnt;
}
unsigned long& Cylinders() const
{
return mDcb->DCB_actual_cyl_cnt;
}
unsigned long& Spt() const
{
return mDcb->DCB_actual_spt;
}
PGPUInt8& BusType() const
{
return mDcb->DCB_bus_type;
}
PGPUInt8& BusNumber() const
{
return mDcb->DCB_bus_number;
}
char * VendorId() const
{
return reinterpret_cast<char *>(mDcb->DCB_vendor_id);
}
char * ProductId() const
{
return reinterpret_cast<char *>(mDcb->DCB_product_id);
}
char * RevLevel() const
{
return reinterpret_cast<char *>(mDcb->DCB_rev_level);
}
char * PortName() const
{
return reinterpret_cast<char *>(mDcb->DCB_port_name);
}
PGPUInt8& CurrentUnit() const
{
return mDcb->DCB_current_unit;
}
unsigned long& PortSpecific() const
{
return mDcb->DCB_Port_Specific;
}
PGPUInt8& BddMajorVersion() const
{
return Bdd().DCB_BDD_BD_Major_Version;
}
PGPUInt8& BddMinorVersion() const
{
return Bdd().DCB_BDD_BD_Minor_Version;
}
PGPUInt8& BddDeviceSubtype() const
{
return Bdd().DCB_BDD_Device_SubType;
}
PGPUInt8& BddInt13Number() const
{
return Bdd().DCB_BDD_Int_13h_Number;
}
unsigned long& BddFlags() const
{
return Bdd().DCB_BDD_flags;
}
PGPUInt64& BddSectorCount() const
{
return *reinterpret_cast<PGPUInt64 *>(&Bdd().DCB_apparent_sector_cnt);
}
unsigned long& BddBlockSize() const
{
return Bdd().DCB_apparent_blk_size;
}
unsigned long& BddHeads() const
{
return Bdd().DCB_apparent_head_cnt;
}
unsigned long& BddCylinders() const
{
return Bdd().DCB_apparent_cyl_cnt;
}
unsigned long& BddSpt() const
{
return Bdd().DCB_apparent_spt;
}
PGPUInt32 CalcBlockSizeFromShift() const
{
return (1 << BlockShift());
}
CComboError GetDcbOfDrive(PGPUInt8 drive);
CComboError Create();
void Destroy();
private:
PGPBoolean mWeCreated;
PDCB mDcb;
};
_PGP_END
#endif // ] Included_CDcb_h
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?