drivermain.cpp
来自「PGP8.0源码 请认真阅读您的文件包然后写出其具体功能」· C++ 代码 · 共 184 行
CPP
184 行
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: DriverMain.cpp,v 1.5 2002/08/06 20:09:31 dallen Exp $
____________________________________________________________________________*/
#include "pgpClassesConfig.h"
#include <winerror.h>
#include "UDebug.h"
#include "UStaticCpp.h"
#include "CPFLImpFactoryDrv98.h"
#include "CInterface.h"
#include "DriverApi.h"
#include "CDriverImpFactoryDrv98.h"
#include "CDriverSubsystemsDrv98.h"
#include "CIosInterface.h"
#include "DriverMain.h"
#include "pgpBuild.h"
_USING_PGP
// Globals
extern "C"
{
ILB PGPdisk_Ilb;
#define PGPDISK_NAME "PGPdisk Driver "
DRP PGPdisk_Drp = {{'X','X','X','X','X','X','X','X'}, DRP_MISC_PD,
PGPdisk_Aer, &PGPdisk_Ilb, "PGPdisk Driver ", 0, 0, 0, DRP_BT_ESDI,
0, 0};
#undef PGPDISK_NAME
}
// DriverMain functions
PDRP
DriverMain::GetDriverDrpInitParam()
{
return &PGPdisk_Drp;
}
PILB
DriverMain::GetDriverIlbInitParam()
{
return &PGPdisk_Ilb;
}
// Extern functions
extern "C"
BOOL
OnSysDynamicDeviceInit()
{
CComboError error;
UDebug::DebugOut("PGPdisk: Loading PGPdisk driver.");
UDebug::DebugOut("PGPdisk: PGPdisk driver v%s loaded.",
PGPVERSIONSTRING);
UDebug::DebugOut(PGPCOPYRIGHT);
UDebug::DebugOut("\n");
// Must construct global static C++ objects.
UStaticCpp::CallGlobalConstructors();
// Create PGPdisk driver subsystems.
error = CPFLImpFactoryDrv98::CreateInstance();
if (error.IsntError())
{
error = CDriverImpFactoryDrv98::CreateInstance();
if (error.IsntError())
{
error = CDriverSubsystemsDrv98::CreateInstance();
if (error.IsntError())
{
error = CDriverSubsystemsDrv98::CreateSubsystems();
if (error.IsntError())
{
UDebug::DebugOut("PGPdisk: PGPdisk driver loaded "
"successfully.");
}
if (error.IsError())
CDriverSubsystemsDrv98::DestroyInstance();
}
if (error.IsError())
CDriverImpFactoryDrv98::DestroyInstance();
}
if (error.IsError())
CPFLImpFactoryDrv98::DestroyInstance();
}
if (error.IsError())
{
UDebug::DebugOut("PGPdisk: PGPdisk driver failed to load!");
UStaticCpp::CallGlobalDestructors();
return FALSE;
}
else
{
return TRUE;
}
}
extern "C"
BOOL
OnSysDynamicDeviceExit()
{
UDebug::DebugOut("PGPdisk:: Unloading PGPdisk driver.");
// Destroy PGPdisk driver subsystems.
CDriverSubsystemsDrv98::DestroySubsystems();
CDriverSubsystemsDrv98::DestroyInstance();
CDriverImpFactoryDrv98::DestroyInstance();
CPFLImpFactoryDrv98::DestroyInstance();
// Must destruct global static C++ objects.
UStaticCpp::CallGlobalDestructors();
UDebug::DebugOut("PGPdisk: PGPdisk driver unloaded successfully.");
return TRUE;
}
extern "C"
DWORD
OnWin32DeviceIoControl(
DWORD dwService,
DWORD dwDDB,
DWORD hDevice,
LPDIOC pParams)
{
CComboError error;
switch (pParams->dwIoControlCode)
{
case DIOC_OPEN:
error.err = ERROR_SUCCESS;
break;
case DIOC_CLOSEHANDLE:
error.err = ERROR_SUCCESS;
break;
case DriverAPI::kSendPacketIoctl:
// Process a DriverCommandPacket from User mode.
if (!CDriverSubsystemsDrv98::Interface().ProcessRawPacket(
reinterpret_cast<void *>(pParams->lpvInBuffer),
pParams->cbInBuffer))
{
error.err = ERROR_INVALID_PARAMETER;
}
break;
default:
error.err = ERROR_INVALID_PARAMETER;
break;
}
return error.err;
}
extern "C"
void
PGPdisk_Aer(PAEP pAep)
{
CDriverSubsystemsDrv98::IosInterface().ProcessAep(pAep);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?