#define NDEBUG
#include <debug.h>
+static
+CODE_SEG("PAGE")
NTSTATUS
-NTAPI
IsaPdoQueryDeviceRelations(
_In_ PISAPNP_PDO_EXTENSION PdoExt,
_Inout_ PIRP Irp,
{
PDEVICE_RELATIONS DeviceRelations;
+ PAGED_CODE();
+
if (IrpSp->Parameters.QueryDeviceRelations.Type == RemovalRelations &&
PdoExt->Common.Self == PdoExt->FdoExt->ReadPortPdo)
{
return STATUS_SUCCESS;
}
+static
+CODE_SEG("PAGE")
NTSTATUS
-NTAPI
IsaPdoQueryCapabilities(
_In_ PISAPNP_PDO_EXTENSION PdoExt,
_Inout_ PIRP Irp,
PISAPNP_LOGICAL_DEVICE LogDev = PdoExt->IsaPnpDevice;
ULONG i;
+ PAGED_CODE();
+
DeviceCapabilities = IrpSp->Parameters.DeviceCapabilities.Capabilities;
if (DeviceCapabilities->Version != 1)
return STATUS_REVISION_MISMATCH;
return STATUS_SUCCESS;
}
+static
+CODE_SEG("PAGE")
NTSTATUS
-NTAPI
IsaPdoQueryPnpDeviceState(
_In_ PISAPNP_PDO_EXTENSION PdoExt,
_Inout_ PIRP Irp,
_In_ PIO_STACK_LOCATION IrpSp)
{
+ PAGED_CODE();
+
Irp->IoStatus.Information |= PNP_DEVICE_NOT_DISABLEABLE;
return STATUS_SUCCESS;
}
+static
+CODE_SEG("PAGE")
NTSTATUS
-NTAPI
IsaPdoQueryId(
_In_ PISAPNP_PDO_EXTENSION PdoExt,
_Inout_ PIRP Irp,
PUNICODE_STRING Source;
PWCHAR Buffer;
+ PAGED_CODE();
+
switch (IrpSp->Parameters.QueryId.IdType)
{
case BusQueryDeviceID:
return STATUS_SUCCESS;
}
+static
+CODE_SEG("PAGE")
NTSTATUS
-NTAPI
IsaPdoQueryResources(
_In_ PISAPNP_PDO_EXTENSION PdoExt,
_Inout_ PIRP Irp,
ULONG ListSize;
PCM_RESOURCE_LIST ResourceList;
+ PAGED_CODE();
+
if (!PdoExt->ResourceList)
return Irp->IoStatus.Status;
return STATUS_SUCCESS;
}
+static
+CODE_SEG("PAGE")
NTSTATUS
-NTAPI
IsaPdoQueryResourceRequirements(
_In_ PISAPNP_PDO_EXTENSION PdoExt,
_Inout_ PIRP Irp,
ULONG ListSize;
PIO_RESOURCE_REQUIREMENTS_LIST RequirementsList;
+ PAGED_CODE();
+
if (!PdoExt->RequirementsList)
return Irp->IoStatus.Status;
}
static
+CODE_SEG("PAGE")
NTSTATUS
-NTAPI
IsaPdoStartReadPort(
_In_ PISAPNP_FDO_EXTENSION FdoExt,
_In_ PIO_STACK_LOCATION IrpSp)
{
PCM_RESOURCE_LIST ResourceList = IrpSp->Parameters.StartDevice.AllocatedResources;
NTSTATUS Status = STATUS_INSUFFICIENT_RESOURCES;
- KIRQL OldIrql;
ULONG i;
+ PAGED_CODE();
+
if (!ResourceList || ResourceList->Count != 1)
{
DPRINT1("No resource list (%p) or bad count (%d)\n",
if (NT_SUCCESS(IsaHwTryReadDataPort(ReadDataPort)))
{
/* We detected some ISAPNP cards */
+
FdoExt->ReadDataPort = ReadDataPort;
- KeAcquireSpinLock(&FdoExt->Lock, &OldIrql);
+
+ IsaPnpAcquireDeviceDataLock(FdoExt);
Status = IsaHwFillDeviceList(FdoExt);
- KeReleaseSpinLock(&FdoExt->Lock, OldIrql);
+ IsaPnpReleaseDeviceDataLock(FdoExt);
+
if (FdoExt->DeviceCount > 0)
{
IoInvalidateDeviceRelations(FdoExt->Pdo, BusRelations);
return STATUS_PENDING;
}
+CODE_SEG("PAGE")
NTSTATUS
-NTAPI
IsaPdoPnp(
_In_ PISAPNP_PDO_EXTENSION PdoExt,
_Inout_ PIRP Irp,
{
NTSTATUS Status = Irp->IoStatus.Status;
+ PAGED_CODE();
+
switch (IrpSp->MinorFunction)
{
case IRP_MN_START_DEVICE: