?? pnpdev.h
字號:
virtual void PowerOn (void);
virtual void PowerOff (void);
static NTSTATUS PowerComplete (PDEVICE_OBJECT pDevObject,
PIRP pIrp,
PVOID pThis);
static void WorkItemRoutine (PDEVICE_OBJECT pDevObject,
PVOID pThis);
//-------------------------- Start/Stop handling -----------------------------
virtual void PreStopDevice (void);
virtual void PreRemoveDevice (PIRP pIrp);
virtual NTSTATUS PreStartDevice (PIRP pIrp);
virtual void PostStartDevice (PIRP pIrp,
NTSTATUS ntStatus);
virtual NTSTATUS StartDevice (PCM_PARTIAL_RESOURCE_LIST pList);
virtual void StopDevice (void);
//****************************************************************************
// *** Member variables ***
//****************************************************************************
protected:
PDEVICE_OBJECT m_pDevObject; // Address DEVICE_OBJECT structure
// associated with THIS object
PDEVICE_OBJECT m_pPdo; // Physical device object
PDEVICE_OBJECT m_pNextStackDevice; // Previously attached device
UNICODE_STRING m_usLnkName; // Symbolic link name
PIO_WORKITEM m_pWorkItem; // Work item
LONG m_fInUse; // References count
BOOLEAN m_fRemoving; // TRUE if remove pending
KEVENT m_evRemove; // Remove device enabled event
DEVICE_POWER_STATE m_DeviceState; // Device power state
SYSTEM_POWER_STATE m_SystemState; // System power state
ULONG m_uPnpState; // Device state
};
//------------------------- Inline implementation ----------------------------
inline BOOLEAN CPnpDevice::OnIrpCreate(PIRP pIrp, NTSTATUS & ntStatus)
{
ntStatus = STATUS_SUCCESS;
return FALSE;
}
inline BOOLEAN CPnpDevice::OnIrpClose(PIRP pIrp, NTSTATUS & ntStatus)
{
ntStatus = STATUS_SUCCESS;
return FALSE;
}
inline BOOLEAN CPnpDevice::OnIrpShutDown(PIRP pIrp, NTSTATUS & ntStatus)
{
ntStatus = STATUS_SUCCESS;
return FALSE;
}
inline BOOLEAN CPnpDevice::OnIrpCleanUp(PIRP pIrp, NTSTATUS & ntStatus)
{
ntStatus = STATUS_SUCCESS;
return FALSE;
}
inline BOOLEAN CPnpDevice::OnIrpCreateNamedPipe(PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpRead (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpWrite (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpQueryInfo (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpSetInfo (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpQueryEA (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpSetEA (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpFlushBuffers (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpQueryVolInfo (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpSetVolInfo (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpDirCtrl (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpFSCtrl (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpDevCtrl (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpIntDevCtrl (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpLockCtrl (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpCreateMailSlot (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpQuerySec (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpSetSec (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpSysControl (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpDevChange (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpQueryQuota (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline BOOLEAN CPnpDevice::OnIrpSetQuota (PIRP pIrp, NTSTATUS & ntStatus) { return FALSE; }
inline NTSTATUS CPnpDevice::OnQueryRemoveDevice (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnCancelRemoveDevice (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnQueryStopDevice (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnCancelStopDevice (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnQueryDeviceRelations (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnQueryInterface (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnQueryCapabilities (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnQueryResources (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnQueryResourceReq (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnQueryDeviceText (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnFilterResReq (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnReadConfig (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnWriteConfig (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnEject (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnSetLock (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnQueryID (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnQueryBusInfo (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnDeviceUsageNotify (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnSurpriseRemoval (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::OnQueryLegacyBusInfo (PIRP pIrp){ return DefPnPHandler(pIrp); }
inline NTSTATUS CPnpDevice::PowerComplete(PDEVICE_OBJECT pDevObject,
PIRP pIrp,
PVOID pThis)
{
return ((CPnpDevice *)pThis)->OnPowerComplete(pIrp);
}
inline void CPnpDevice::WorkItemRoutine(PDEVICE_OBJECT pDevObject, PVOID pThis)
{
((CPnpDevice *)pThis)->OnWorkItem();
}
inline NTSTATUS CPnpDevice::OnQueryPower(PIRP pIrp,
POWER_STATE_TYPE pwType,
POWER_STATE pwState)
{
return STATUS_SUCCESS;
}
inline void CPnpDevice::PowerOn(void) {}
inline void CPnpDevice::PowerOff(void){}
inline void CPnpDevice::PreStopDevice(void) {}
inline void CPnpDevice::PreRemoveDevice(PIRP pIrp) {}
inline NTSTATUS CPnpDevice::PreStartDevice(PIRP pIrp) { return STATUS_SUCCESS; }
inline void CPnpDevice::PostStartDevice(PIRP pIrp, NTSTATUS ntStatus) {}
inline NTSTATUS CPnpDevice::StartDevice(PCM_PARTIAL_RESOURCE_LIST pList) { return STATUS_SUCCESS; }
inline void CPnpDevice::StopDevice(void) {}
#endif // #ifndef _PNPDEV_H_
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -