mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.5 KiB
123 lines
3.5 KiB
/*++
|
|
|
|
Copyright (c) 1991 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
ixdat.c
|
|
|
|
Abstract:
|
|
|
|
Declares various data which is initialize data, or pagable data.
|
|
|
|
Author:
|
|
|
|
Environment:
|
|
|
|
Kernel mode only.
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
|
|
#include "pciport.h"
|
|
|
|
//
|
|
// PcipWorkdListLock - Lock to protect DeviceControl globals
|
|
// PcipControlWorkerList - List of slot control's which are pending for worker thread
|
|
// PcipControlDpcList - List of slot control's which are waiting, but are non-paged
|
|
// PcipWorkItem - Enqueue for DeviceControl worker thread
|
|
// PcipWorkDpc - Enqueue for DeviceControl DPC
|
|
//
|
|
|
|
FAST_MUTEX PcipMutex;
|
|
KSPIN_LOCK PcipSpinlock;
|
|
LIST_ENTRY PcipControlWorkerList;
|
|
LIST_ENTRY PcipControlDpcList;
|
|
LIST_ENTRY PcipCheckBusList;
|
|
ULONG PcipWorkerQueued;
|
|
WORK_QUEUE_ITEM PcipWorkItem;
|
|
KDPC PcipWorkDpc;
|
|
ULONG PcipDeviceHandlerObjectSize;
|
|
|
|
//
|
|
// DeviceControl dispatch table
|
|
//
|
|
|
|
#define B_EJECT BCTL_EJECT
|
|
#define B_ID BCTL_QUERY_DEVICE_ID
|
|
#define B_UID BCTL_QUERY_DEVICE_UNIQUE_ID
|
|
#define B_CAPABILITIES BCTL_QUERY_DEVICE_CAPABILITIES
|
|
#define B_RES BCTL_QUERY_DEVICE_RESOURCES
|
|
#define B_RES_REQ BCTL_QUERY_DEVICE_RESOURCE_REQUIREMENTS
|
|
#define B_QUERY_EJECT BCTL_QUERY_EJECT
|
|
#define B_SET_LOCK BCTL_SET_LOCK
|
|
#define B_SET_POWER BCTL_SET_POWER
|
|
#define B_SET_RESUME BCTL_SET_RESUME
|
|
#define B_SET_RES BCTL_SET_DEVICE_RESOURCES
|
|
#define B_ASSIGN_RES BCTL_ASSIGN_SLOT_RESOURCES
|
|
|
|
#define SIZE_BRES sizeof(CTL_ASSIGN_RESOURCES)
|
|
#define SIZE_CAP sizeof(BCTL_DEVICE_CAPABILITIES)
|
|
#define SIZE_CALL sizeof(PCALLBACK_OBJECT)
|
|
|
|
DEVICE_CONTROL_HANDLER PcipControl[] = {
|
|
B_EJECT, 0, PciBCtlEject, PciCtlEject,
|
|
B_ID, 128, PciBCtlSync, PciCtlQueryDeviceId,
|
|
B_UID, 128, PciBCtlSync, PciCtlQueryDeviceUniqueId,
|
|
B_CAPABILITIES, SIZE_CAP, PciBCtlSync, PciCtlForward, // bugbug
|
|
B_RES, sizeof(ULONG), PciBCtlSync, PciCtlQueryDeviceResources,
|
|
B_RES_REQ, sizeof(ULONG), PciBCtlSync, PciCtlQueryDeviceResourceRequirements,
|
|
B_QUERY_EJECT, SIZE_CALL, PciBCtlSync, PciCtlForward,
|
|
B_SET_LOCK, sizeof(BOOLEAN), PciBCtlLock, PciCtlLock,
|
|
B_SET_RESUME, sizeof(BOOLEAN), PciBCtlSync, PciCtlForward,
|
|
B_SET_POWER, sizeof(POWER_STATE), PciBCtlPower, PciCtlPower,
|
|
B_SET_RES, 0, PciBCtlSync, PciCtlSetDeviceResources,
|
|
B_ASSIGN_RES, SIZE_BRES, PciBCtlSync, PciCtlAssignSlotResources,
|
|
0, 0, NULL, NULL
|
|
};
|
|
|
|
|
|
#ifdef ALLOC_DATA_PRAGMA
|
|
#pragma data_seg("PAGE")
|
|
#endif
|
|
|
|
//
|
|
// PciDriverObject - the driver object for pciport.sys
|
|
//
|
|
|
|
|
|
PDRIVER_OBJECT PciDriverObject;
|
|
|
|
//
|
|
// PciCodeLock - Handle for locked code (only used during system
|
|
// Suspend/Hibernate/Resume procedure)
|
|
//
|
|
|
|
PVOID PciCodeLock;
|
|
|
|
//
|
|
// PciSuspendRegistration - A registration to the systems
|
|
// Suspend/Hibernate/Resume callback
|
|
//
|
|
|
|
HAL_CALLBACKS PciHalCallbacks;
|
|
|
|
//
|
|
// PciSuspendRegistration - A registration to the systems
|
|
// Suspend/Hibernate/Resume callback
|
|
//
|
|
|
|
PVOID PciSuspendRegistration;
|
|
|
|
//
|
|
// Some global strings
|
|
//
|
|
|
|
WCHAR rgzPCIDeviceName[] = L"\\Device\\PciBus_%d";
|
|
WCHAR rgzSuspendCallbackName[] = L"\\Callback\\SuspendHibernateSystem";
|
|
|
|
WCHAR PCI_ID[] = L"PCI\\%04x_%04x";
|
|
WCHAR PNP_VGA[] = L"PCI\\*PNP_VGA";
|
|
WCHAR PNP_IDE[] = L"PCI\\*PNP_IDE";
|