Something went wrong. Try again.
Reactos
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374/* * PROJECT: ReactOS ISA PnP Bus driver * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) * PURPOSE: Driver interface * COPYRIGHT: Copyright 2021 Dmitry Borisov <di.sean@protonmail.com> */
/* INCLUDES *******************************************************************/
#include "isapnp.h"
#define NDEBUG#include <debug.h>
/* FUNCTIONS ******************************************************************/
CODE_SEG("PAGE")NTSTATUSIsaFdoQueryInterface( _In_ PISAPNP_FDO_EXTENSION FdoExt, _In_ PIO_STACK_LOCATION IrpSp){ PAGED_CODE();
if (IsEqualGUIDAligned(IrpSp->Parameters.QueryInterface.InterfaceType, &GUID_TRANSLATOR_INTERFACE_STANDARD)) { NTSTATUS Status; CM_RESOURCE_TYPE ResourceType; ULONG ParentBusType, ParentBusNumber, Dummy;
ResourceType = PtrToUlong(IrpSp->Parameters.QueryInterface.InterfaceSpecificData);
if (IrpSp->Parameters.QueryInterface.Size < sizeof(TRANSLATOR_INTERFACE) || ResourceType != CmResourceTypeInterrupt) { return STATUS_NOT_SUPPORTED; }
Status = IoGetDeviceProperty(FdoExt->Pdo, DevicePropertyLegacyBusType, sizeof(ParentBusType), &ParentBusType, &Dummy); if (!NT_SUCCESS(Status)) { DPRINT1("BusType request failed with status 0x%08lx\n", Status); return Status; }
Status = IoGetDeviceProperty(FdoExt->Pdo, DevicePropertyBusNumber, sizeof(ParentBusNumber), &ParentBusNumber, &Dummy); if (!NT_SUCCESS(Status)) { DPRINT1("BusNumber request failed with status 0x%08lx\n", Status); return Status; }
return HalGetInterruptTranslator(ParentBusType, ParentBusNumber, Isa, IrpSp->Parameters.QueryInterface.Size, IrpSp->Parameters.QueryInterface.Version, (PTRANSLATOR_INTERFACE)IrpSp-> Parameters.QueryInterface.Interface, &ParentBusNumber); }
return STATUS_NOT_SUPPORTED;}