ciop.h
来自「PGP8.0源码 请认真阅读您的文件包然后写出其具体功能」· C头文件 代码 · 共 229 行
H
229 行
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: CIop.h,v 1.2 2002/08/06 20:09:30 dallen Exp $
____________________________________________________________________________*/
#ifndef Included_CIop_h // [
#define Included_CIop_h
_PGP_BEGIN
// Class CIop
class CIop
{
NOT_COPYABLE(CIop)
public:
enum {kDefaultIopTimeout = 15, kPGPdiskIopMagic = 0xAB42F61D};
public:
CIop();
CIop(PIOP pIop);
~CIop();
PGPBoolean WeCreated() const {return mWeCreated;}
operator IOP&() {return *mIop;}
operator const IOP&() const {return *mIop;}
operator IOR&() {return mIop->IOP_ior;}
operator const IOR&() const {return mIop->IOP_ior;}
operator PIOP() {return mIop;}
operator const PIOP() const {return mIop;}
operator PIOR() {return &mIop->IOP_ior;}
operator const PIOR() const {return &mIop->IOP_ior;}
PIOP Get() const {return mIop;}
PGPBoolean IsAPGPdiskIop() const
{
return (PrivatePort() == kPGPdiskIopMagic);
}
PGPBoolean IsInBytes() const
{
return (Flags() & IORF_CHAR_COMMAND ? TRUE : FALSE);
}
PGPBoolean IsScatterGather() const
{
return (Flags() & IORF_SCATTER_GATHER ? TRUE : FALSE);
}
IOR& Ior() const
{
return mIop->IOP_ior;
}
PIOR& Next() const
{
return *reinterpret_cast<PIOR *>(&Ior().IOR_next);
}
PDCB& PhysicalDcb() const
{
return *reinterpret_cast<PDCB *>(&mIop->IOP_physical_dcb);
}
PDCB_COMMON& OriginalDcb() const
{
return *reinterpret_cast<PDCB_COMMON *>(&mIop->IOP_original_dcb);
}
PGPUInt16& Timer() const
{
return mIop->IOP_timer;
}
PGPUInt16& TimerOrig() const
{
return mIop->IOP_timer_orig;
}
DCB_cd_entry *& CalldownPtr() const
{
return *reinterpret_cast<DCB_cd_entry **>(&mIop->IOP_calldown_ptr);
}
IOP_callback_entry *& CallbackPtr() const
{
return *reinterpret_cast<IOP_callback_entry **>(
&mIop->IOP_callback_ptr);
}
PGPUInt16& Func() const
{
return Ior().IOR_func;
}
PGPUInt16& Status() const
{
return Ior().IOR_status;
}
unsigned long& Flags() const
{
return Ior().IOR_flags;
}
CMDCPLT& Callback() const
{
return Ior().IOR_callback;
}
PGPUInt64& StartAddress() const
{
return *reinterpret_cast<PGPUInt64 *>(&Ior().IOR_start_addr);
}
unsigned long& TransferCount() const
{
return Ior().IOR_xfer_count;
}
void *& Buffer() const
{
return *reinterpret_cast<void **>(&Ior().IOR_buffer_ptr);
}
unsigned long& PrivatePort() const
{
return Ior().IOR_private_port;
}
PGPUInt16& IoctlDrive() const
{
return Ior().IOR_ioctl_drive;
}
PGPUInt16& IoctlFunction() const
{
return Ior().IOR_ioctl_function;
}
unsigned long& IoctlControlParam() const
{
return Ior().IOR_ioctl_control_param;
}
void *& IoctlBuffer() const
{
return *reinterpret_cast<void **>(&Ior().IOR_ioctl_buffer_ptr);
}
unsigned long& IoctlClientParams() const
{
return Ior().IOR_ioctl_client_params;
}
unsigned long& IoctlReturn() const
{
return Ior().IOR_ioctl_return;
}
unsigned long& IoctlBufferLength() const
{
return Ior().IOR_private_client;
}
unsigned long& ReqReqHandle() const
{
return Ior().IOR_req_req_handle;
}
PVRP& ReqVolHandle() const
{
return *reinterpret_cast<PVRP *>(&Ior().IOR_req_vol_handle);
}
PSGD& SgdLinPhys() const
{
return *reinterpret_cast<PSGD *>(&Ior().IOR_sgd_lin_phys);
}
PGPUInt8& NumSgds() const
{
return Ior().IOR_num_sgds;
}
PGPUInt8& Drive() const
{
return Ior().IOR_vol_designtr;
}
PGPBoolean IsStatusError() const
{
return (Status() >= IORS_ERROR_DESIGNTR);
}
PGPUInt32 GetErrorAsWin32() const
{
return IOSMapIORSToI21(Status());
}
PGPBoolean DoIlbCriteria() const;
PGPBoolean DoInternalIlbCriteria() const;
CComboError Create(PVRP pVrp, PGPUInt8 flags);
void Destroy();
void SendCommand(const PDCB pDcb) const;
void Callback(PGPUInt16 status) const;
private:
PGPBoolean mWeCreated;
PIOP mIop;
PGPUInt16 mOffset;
PGPUInt16 mSize;
};
_PGP_END
#endif // ] Included_CIop_h
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?