ReactOS  0.4.15-dev-3453-gff89651
halpnpdd.c File Reference
#include <hal.h>
#include <debug.h>
Include dependency graph for halpnpdd.c:

Go to the source code of this file.

Classes

struct  _FDO_EXTENSION
 
struct  _PDO_EXTENSION
 

Macros

#define NDEBUG
 

Typedefs

typedef enum _EXTENSION_TYPE EXTENSION_TYPE
 
typedef enum _PDO_TYPE PDO_TYPE
 
typedef struct _FDO_EXTENSION FDO_EXTENSION
 
typedef struct _FDO_EXTENSIONPFDO_EXTENSION
 
typedef struct _PDO_EXTENSION PDO_EXTENSION
 
typedef struct _PDO_EXTENSIONPPDO_EXTENSION
 

Enumerations

enum  _EXTENSION_TYPE { PdoExtensionType = 0xC0, FdoExtensionType, PdoExtensionType = 0xC0, FdoExtensionType }
 
enum  _PDO_TYPE {
  AcpiPdo = 0x80, WdPdo, AcpiPdo = 0x80, WdPdo,
  PDO_TYPE_UNDEFINED = 0, PDO_TYPE_DISK, PDO_TYPE_CONTROL, PDO_TYPE_SILO,
  PDO_TYPE_THIS = 256
}
 

Functions

NTSTATUS NTAPI HalpAddDevice (IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT TargetDevice)
 
NTSTATUS NTAPI HalpQueryInterface (IN PDEVICE_OBJECT DeviceObject, IN CONST GUID *InterfaceType, IN USHORT Version, IN PVOID InterfaceSpecificData, IN ULONG InterfaceBufferSize, IN PINTERFACE Interface, OUT PULONG Length)
 
NTSTATUS NTAPI HalpQueryDeviceRelations (IN PDEVICE_OBJECT DeviceObject, IN DEVICE_RELATION_TYPE RelationType, OUT PDEVICE_RELATIONS *DeviceRelations)
 
NTSTATUS NTAPI HalpQueryCapabilities (IN PDEVICE_OBJECT DeviceObject, OUT PDEVICE_CAPABILITIES Capabilities)
 
NTSTATUS NTAPI HalpQueryResources (IN PDEVICE_OBJECT DeviceObject, OUT PCM_RESOURCE_LIST *Resources)
 
NTSTATUS NTAPI HalpQueryResourceRequirements (IN PDEVICE_OBJECT DeviceObject, OUT PIO_RESOURCE_REQUIREMENTS_LIST *Requirements)
 
NTSTATUS NTAPI HalpQueryIdPdo (IN PDEVICE_OBJECT DeviceObject, IN BUS_QUERY_ID_TYPE IdType, OUT PUSHORT *BusQueryId)
 
NTSTATUS NTAPI HalpQueryIdFdo (IN PDEVICE_OBJECT DeviceObject, IN BUS_QUERY_ID_TYPE IdType, OUT PUSHORT *BusQueryId)
 
NTSTATUS NTAPI HalpDispatchPnp (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
 
NTSTATUS NTAPI HalpDispatchWmi (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
 
NTSTATUS NTAPI HalpDispatchPower (IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
 
NTSTATUS NTAPI HalpDriverEntry (IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
 
NTSTATUS NTAPI HaliInitPnpDriver (VOID)
 

Variables

PDRIVER_OBJECT HalpDriverObject
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 12 of file halpnpdd.c.

Typedef Documentation

◆ EXTENSION_TYPE

◆ FDO_EXTENSION

◆ PDO_EXTENSION

◆ PDO_TYPE

◆ PFDO_EXTENSION

◆ PPDO_EXTENSION

Enumeration Type Documentation

◆ _EXTENSION_TYPE

Enumerator
PdoExtensionType 
FdoExtensionType 
PdoExtensionType 
FdoExtensionType 

Definition at line 15 of file halpnpdd.c.

16 {
17  PdoExtensionType = 0xC0,
enum _EXTENSION_TYPE EXTENSION_TYPE

◆ _PDO_TYPE

Enumerator
AcpiPdo 
WdPdo 
AcpiPdo 
WdPdo 
PDO_TYPE_UNDEFINED 
PDO_TYPE_DISK 
PDO_TYPE_CONTROL 
PDO_TYPE_SILO 
PDO_TYPE_THIS 

Definition at line 21 of file halpnpdd.c.

22 {
23  AcpiPdo = 0x80,
24  WdPdo
25 } PDO_TYPE;
enum _PDO_TYPE PDO_TYPE
Definition: halpnpdd.c:24

Function Documentation

◆ HaliInitPnpDriver()

NTSTATUS NTAPI HaliInitPnpDriver ( VOID  )

Definition at line 912 of file halpnpdd.c.

913 {
915  UNICODE_STRING DriverString;
916  PAGED_CODE();
917 
918  /* Create the driver */
919  RtlInitUnicodeString(&DriverString, L"\\Driver\\PCI_HAL");
920  Status = IoCreateDriver(&DriverString, HalpDriverEntry);
921 
922  /* Return status */
923  return Status;
924 }
LONG NTSTATUS
Definition: precomp.h:26
#define L(x)
Definition: ntvdm.h:50
NTSTATUS NTAPI IoCreateDriver(_In_opt_ PUNICODE_STRING DriverName, _In_ PDRIVER_INITIALIZE InitializationFunction)
Definition: driver.c:1550
Status
Definition: gdiplustypes.h:24
NTSTATUS NTAPI HalpDriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
Definition: halpnpdd.c:839
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define PAGED_CODE()

◆ HalpAddDevice()

NTSTATUS NTAPI HalpAddDevice ( IN PDRIVER_OBJECT  DriverObject,
IN PDEVICE_OBJECT  TargetDevice 
)

Definition at line 55 of file halpnpdd.c.

57 {
61  PDEVICE_OBJECT DeviceObject, AttachedDevice;
63 // PDESCRIPTION_HEADER Wdrt;
64 
65  DPRINT("HAL: PnP Driver ADD!\n");
66 
67  /* Create the FDO */
69  sizeof(FDO_EXTENSION),
70  NULL,
72  0,
73  FALSE,
74  &DeviceObject);
75  if (!NT_SUCCESS(Status))
76  {
77  /* Should not happen */
78  DbgBreakPoint();
79  return Status;
80  }
81 
82  /* Setup the FDO extension */
83  FdoExtension = DeviceObject->DeviceExtension;
84  FdoExtension->ExtensionType = FdoExtensionType;
85  FdoExtension->PhysicalDeviceObject = TargetDevice;
86  FdoExtension->FunctionalDeviceObject = DeviceObject;
87  FdoExtension->ChildPdoList = NULL;
88 
89  /* FDO is done initializing */
91 
92  /* Attach to the physical device object (the bus) */
94  if (!AttachedDevice)
95  {
96  /* Failed, undo everything */
98  return STATUS_NO_SUCH_DEVICE;
99  }
100 
101  /* Save the attachment */
102  FdoExtension->AttachedDeviceObject = AttachedDevice;
103 
104  /* Create the PDO */
106  sizeof(PDO_EXTENSION),
107  NULL,
110  FALSE,
111  &PdoDeviceObject);
112  if (!NT_SUCCESS(Status))
113  {
114  /* Fail */
115  DPRINT1("HAL: Could not create ACPI device object status=0x%08x\n", Status);
116  return Status;
117  }
118 
119  /* Setup the PDO device extension */
120  PdoExtension = PdoDeviceObject->DeviceExtension;
121  PdoExtension->ExtensionType = PdoExtensionType;
122  PdoExtension->PhysicalDeviceObject = PdoDeviceObject;
123  PdoExtension->ParentFdoExtension = FdoExtension;
124  PdoExtension->PdoType = AcpiPdo;
125 
126  /* Add the PDO to the head of the list */
127  PdoExtension->Next = FdoExtension->ChildPdoList;
128  FdoExtension->ChildPdoList = PdoExtension;
129 
130  /* Initialization is finished */
132 
133  /* Return status */
134  DPRINT("Device added %lx\n", Status);
135  return Status;
136 }
#define DO_DEVICE_INITIALIZING
Definition: env_spec_w32.h:399
_Must_inspect_result_ __drv_aliasesMem PDEVICE_OBJECT _In_ PDEVICE_OBJECT TargetDevice
Definition: iofuncs.h:690
LONG NTSTATUS
Definition: precomp.h:26
_Outptr_ PUSB_DEVICE_HANDLE _In_ PUSB_DEVICE_HANDLE _In_ USHORT _In_ PUSB_PORT_PATH _Out_ PUSB_CD_ERROR_INFORMATION _In_ USHORT _In_ PDEVICE_OBJECT PdoDeviceObject
Definition: hubbusif.h:89
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
#define FALSE
Definition: types.h:117
VOID NTAPI DbgBreakPoint(VOID)
PDEVICE_OBJECT NTAPI IoAttachDeviceToDeviceStack(IN PDEVICE_OBJECT SourceDevice, IN PDEVICE_OBJECT TargetDevice)
Definition: device.c:966
#define FILE_AUTOGENERATED_DEVICE_NAME
Definition: iotypes.h:138
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
Definition: wdfdriver.h:213
Status
Definition: gdiplustypes.h:24
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define STATUS_NO_SUCH_DEVICE
Definition: udferr_usr.h:136
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
Definition: device.c:1251
#define NULL
Definition: types.h:112
#define DPRINT1
Definition: precomp.h:8
NTSTATUS NTAPI IoCreateDevice(IN PDRIVER_OBJECT DriverObject, IN ULONG DeviceExtensionSize, IN PUNICODE_STRING DeviceName, IN DEVICE_TYPE DeviceType, IN ULONG DeviceCharacteristics, IN BOOLEAN Exclusive, OUT PDEVICE_OBJECT *DeviceObject)
Definition: device.c:1031
#define DPRINT
Definition: sndvol32.h:71
#define FILE_DEVICE_BUS_EXTENDER
Definition: winioctl.h:148

◆ HalpDispatchPnp()

NTSTATUS NTAPI HalpDispatchPnp ( IN PDEVICE_OBJECT  DeviceObject,
IN PIRP  Irp 
)

Definition at line 610 of file halpnpdd.c.

612 {
613  PIO_STACK_LOCATION IoStackLocation;
614  //PPDO_EXTENSION PdoExtension;
617  UCHAR Minor;
618 
619  /* Get the device extension and stack location */
620  FdoExtension = DeviceObject->DeviceExtension;
621  IoStackLocation = IoGetCurrentIrpStackLocation(Irp);
622  Minor = IoStackLocation->MinorFunction;
623 
624  /* FDO? */
625  if (FdoExtension->ExtensionType == FdoExtensionType)
626  {
627  /* Query the IRP type */
628  switch (Minor)
629  {
631 
632  /* Call the worker */
633  DPRINT("Querying device relations for FDO\n");
635  IoStackLocation->Parameters.QueryDeviceRelations.Type,
636  (PVOID)&Irp->IoStatus.Information);
637  break;
638 
640 
641  /* Call the worker */
642  DPRINT("Querying interface for FDO\n");
644  IoStackLocation->Parameters.QueryInterface.InterfaceType,
645  IoStackLocation->Parameters.QueryInterface.Size,
646  IoStackLocation->Parameters.QueryInterface.InterfaceSpecificData,
647  IoStackLocation->Parameters.QueryInterface.Version,
648  IoStackLocation->Parameters.QueryInterface.Interface,
649  (PVOID)&Irp->IoStatus.Information);
650  break;
651 
652  case IRP_MN_QUERY_ID:
653 
654  /* Call the worker */
655  DPRINT("Querying ID for FDO\n");
657  IoStackLocation->Parameters.QueryId.IdType,
658  (PVOID)&Irp->IoStatus.Information);
659  break;
660 
662 
663  /* Call the worker */
664  DPRINT("Querying the capabilities for the FDO\n");
666  IoStackLocation->Parameters.DeviceCapabilities.Capabilities);
667  break;
668 
669  default:
670 
671  DPRINT("Other IRP: %lx\n", Minor);
673  break;
674  }
675 
676  /* What happpened? */
678  {
679  /* Set the IRP status, unless this isn't understood */
681  {
682  Irp->IoStatus.Status = Status;
683  }
684 
685  /* Pass it on */
687  return IoCallDriver(FdoExtension->AttachedDeviceObject, Irp);
688  }
689 
690  /* Otherwise, we failed, so set the status and complete the request */
691  DPRINT1("IRP failed with status: %lx\n", Status);
692  Irp->IoStatus.Status = Status;
694  return Status;
695  }
696  else
697  {
698  /* This is a PDO instead */
699  ASSERT(FdoExtension->ExtensionType == PdoExtensionType);
700  //PdoExtension = (PPDO_EXTENSION)FdoExtension;
701 
702  /* Query the IRP type */
704  switch (Minor)
705  {
706  case IRP_MN_START_DEVICE:
707 
708  /* We only care about a PCI PDO */
709  DPRINT("Start device received\n");
710  /* Complete the IRP normally */
711  break;
712 
714 
715  /* Check if this is a PCI device */
716  DPRINT("Remove device received\n");
717 
718  /* We're done */
720  break;
721 
723 
724  /* Inherit whatever status we had */
725  DPRINT("Surprise removal IRP\n");
726  Status = Irp->IoStatus.Status;
727  break;
728 
730 
731  /* Query the device relations */
732  DPRINT("Querying PDO relations\n");
734  IoStackLocation->Parameters.QueryDeviceRelations.Type,
735  (PVOID)&Irp->IoStatus.Information);
736  break;
737 
739 
740  /* Call the worker */
741  DPRINT("Querying interface for PDO\n");
743  IoStackLocation->Parameters.QueryInterface.InterfaceType,
744  IoStackLocation->Parameters.QueryInterface.Size,
745  IoStackLocation->Parameters.QueryInterface.InterfaceSpecificData,
746  IoStackLocation->Parameters.QueryInterface.Version,
747  IoStackLocation->Parameters.QueryInterface.Interface,
748  (PVOID)&Irp->IoStatus.Information);
749  break;
750 
752 
753  /* Call the worker */
754  DPRINT("Querying the capabilities for the PDO\n");
756  IoStackLocation->Parameters.DeviceCapabilities.Capabilities);
757  break;
758 
760 
761  /* Call the worker */
762  DPRINT("Querying the resources for the PDO\n");
763  Status = HalpQueryResources(DeviceObject, (PVOID)&Irp->IoStatus.Information);
764  break;
765 
767 
768  /* Call the worker */
769  DPRINT("Querying the resource requirements for the PDO\n");
771  (PVOID)&Irp->IoStatus.Information);
772  break;
773 
774  case IRP_MN_QUERY_ID:
775 
776  /* Call the worker */
777  DPRINT("Query the ID for the PDO\n");
779  IoStackLocation->Parameters.QueryId.IdType,
780  (PVOID)&Irp->IoStatus.Information);
781  break;
782 
784 
785  /* Inherit whatever status we had */
786  DPRINT("Query text for the PDO\n");
787  Status = Irp->IoStatus.Status;
788  break;
789 
791 
792  /* Inherit whatever status we had */
793  DPRINT("Filter resource requirements for the PDO\n");
794  Status = Irp->IoStatus.Status;
795  break;
796 
798 
799  /* Inherit whatever status we had */
800  DPRINT("Query device state for the PDO\n");
801  Status = Irp->IoStatus.Status;
802  break;
803 
805 
806  /* Inherit whatever status we had */
807  DPRINT("Query bus information for the PDO\n");
808  Status = Irp->IoStatus.Status;
809  break;
810 
811  default:
812 
813  /* We don't handle anything else, so inherit the old state */
814  DPRINT1("Illegal IRP: %lx\n", Minor);
815  Status = Irp->IoStatus.Status;
816  break;
817  }
818 
819  /* If it's not supported, inherit the old status */
820  if (Status == STATUS_NOT_SUPPORTED) Status = Irp->IoStatus.Status;
821 
822  /* Complete the IRP */
823  DPRINT("IRP completed with status: %lx\n", Status);
824  Irp->IoStatus.Status = Status;
826  return Status;
827  }
828 }
NTSTATUS NTAPI HalpQueryInterface(IN PDEVICE_OBJECT DeviceObject, IN CONST GUID *InterfaceType, IN USHORT Version, IN PVOID InterfaceSpecificData, IN ULONG InterfaceBufferSize, IN PINTERFACE Interface, OUT PULONG Length)
Definition: halpnpdd.c:148
_Out_opt_ PULONG Minor
Definition: cmfuncs.h:44
NTSTATUS NTAPI HalpQueryIdPdo(IN PDEVICE_OBJECT DeviceObject, IN BUS_QUERY_ID_TYPE IdType, OUT PUSHORT *BusQueryId)
Definition: halpnpdd.c:454
return STATUS_NOT_SUPPORTED
#define IRP_MN_QUERY_RESOURCES
#define IRP_MN_REMOVE_DEVICE
#define IRP_MN_QUERY_ID
#define IRP_MN_FILTER_RESOURCE_REQUIREMENTS
#define IRP_MN_QUERY_RESOURCE_REQUIREMENTS
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS NTAPI HalpQueryResourceRequirements(IN PDEVICE_OBJECT DeviceObject, OUT PIO_RESOURCE_REQUIREMENTS_LIST *Requirements)
Definition: halpnpdd.c:428
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
_In_ PIRP Irp
Definition: csq.h:116
NTSTATUS NTAPI HalpQueryIdFdo(IN PDEVICE_OBJECT DeviceObject, IN BUS_QUERY_ID_TYPE IdType, OUT PUSHORT *BusQueryId)
Definition: halpnpdd.c:550
#define IoCompleteRequest
Definition: irp.c:1240
Status
Definition: gdiplustypes.h:24
#define IRP_MN_SURPRISE_REMOVAL
Definition: ntifs_ex.h:408
#define ASSERT(a)
Definition: mode.c:44
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define IRP_MN_START_DEVICE
#define IRP_MN_QUERY_DEVICE_TEXT
#define IRP_MN_QUERY_INTERFACE
#define IRP_MN_QUERY_BUS_INFORMATION
unsigned char UCHAR
Definition: xmlstorage.h:181
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
Definition: iofuncs.h:2793
NTSTATUS NTAPI HalpQueryResources(IN PDEVICE_OBJECT DeviceObject, OUT PCM_RESOURCE_LIST *Resources)
Definition: halpnpdd.c:337
NTSTATUS NTAPI IoCallDriver(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: irp.c:1218
#define IRP_MN_QUERY_DEVICE_RELATIONS
#define IoSkipCurrentIrpStackLocation(Irp)
Definition: ntifs_ex.h:421
#define DPRINT1
Definition: precomp.h:8
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
NTSTATUS NTAPI HalpQueryDeviceRelations(IN PDEVICE_OBJECT DeviceObject, IN DEVICE_RELATION_TYPE RelationType, OUT PDEVICE_RELATIONS *DeviceRelations)
Definition: halpnpdd.c:162
#define IO_NO_INCREMENT
Definition: iotypes.h:598
#define STATUS_SUCCESS
Definition: shellext.h:65
#define DPRINT
Definition: sndvol32.h:71
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
Definition: iotypes.h:3128
#define IRP_MN_QUERY_PNP_DEVICE_STATE
NTSTATUS NTAPI HalpQueryCapabilities(IN PDEVICE_OBJECT DeviceObject, OUT PDEVICE_CAPABILITIES Capabilities)
Definition: halpnpdd.c:280
#define IRP_MN_QUERY_CAPABILITIES

◆ HalpDispatchPower()

NTSTATUS NTAPI HalpDispatchPower ( IN PDEVICE_OBJECT  DeviceObject,
IN PIRP  Irp 
)

Definition at line 841 of file halpnpdd.c.

843 {
845 
846  DPRINT1("HAL: PnP Driver Power!\n");
847  FdoExtension = DeviceObject->DeviceExtension;
848  if (FdoExtension->ExtensionType == FdoExtensionType)
849  {
852  return PoCallDriver(FdoExtension->AttachedDeviceObject, Irp);
853  }
854  else
855  {
857  Irp->IoStatus.Status = STATUS_SUCCESS;
859  return STATUS_SUCCESS;
860  }
861 }
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
_In_ PIRP Irp
Definition: csq.h:116
#define IoCompleteRequest
Definition: irp.c:1240
VOID NTAPI PoStartNextPowerIrp(IN PIRP Irp)
Definition: power.c:746
#define IoSkipCurrentIrpStackLocation(Irp)
Definition: ntifs_ex.h:421
#define DPRINT1
Definition: precomp.h:8
#define IO_NO_INCREMENT
Definition: iotypes.h:598
#define STATUS_SUCCESS
Definition: shellext.h:65

◆ HalpDispatchWmi()

NTSTATUS NTAPI HalpDispatchWmi ( IN PDEVICE_OBJECT  DeviceObject,
IN PIRP  Irp 
)

Definition at line 832 of file halpnpdd.c.

834 {
835  UNIMPLEMENTED_DBGBREAK("HAL: PnP Driver WMI!\n");
836  return STATUS_SUCCESS;
837 }
#define UNIMPLEMENTED_DBGBREAK(...)
Definition: debug.h:57
#define STATUS_SUCCESS
Definition: shellext.h:65

◆ HalpDriverEntry()

NTSTATUS NTAPI HalpDriverEntry ( IN PDRIVER_OBJECT  DriverObject,
IN PUNICODE_STRING  RegistryPath 
)

Definition at line 865 of file halpnpdd.c.

867 {
870 
871  DPRINT("HAL: PnP Driver ENTRY!\n");
872 
873  /* This is us */
875 
876  /* Set up add device */
878 
879  /* Set up the callouts */
880  DriverObject->MajorFunction[IRP_MJ_PNP] = HalpDispatchPnp;
881  DriverObject->MajorFunction[IRP_MJ_POWER] = HalpDispatchPower;
883 
884  /* Create the PDO and tell the PnP manager about us*/
887  -1,
888  -1,
889  NULL,
890  NULL,
891  FALSE,
892  &TargetDevice);
893  if (!NT_SUCCESS(Status))
894  return Status;
895 
897 
898  /* Set up the device stack */
900  if (!NT_SUCCESS(Status))
901  {
903  return Status;
904  }
905 
906  /* Return to kernel */
907  return Status;
908 }
#define DO_DEVICE_INITIALIZING
Definition: env_spec_w32.h:399
_Must_inspect_result_ __drv_aliasesMem PDEVICE_OBJECT _In_ PDEVICE_OBJECT TargetDevice
Definition: iofuncs.h:690
PDRIVER_OBJECT HalpDriverObject
Definition: halpnpdd.c:49
NTSTATUS NTAPI HalpDispatchPower(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: halpnpdd.c:815
#define IRP_MJ_PNP
Definition: cdrw_usr.h:52
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS NTAPI HalpDispatchPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: halpnpdd.c:612
#define FALSE
Definition: types.h:117
PDRIVER_EXTENSION DriverExtension
Definition: iotypes.h:2282
NTSTATUS NTAPI HalpDispatchWmi(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: halpnpdd.c:806
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
Definition: wdfdriver.h:213
Status
Definition: gdiplustypes.h:24
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define IRP_MJ_POWER
#define IRP_MJ_SYSTEM_CONTROL
NTSTATUS NTAPI IoReportDetectedDevice(_In_ PDRIVER_OBJECT DriverObject, _In_ INTERFACE_TYPE LegacyBusType, _In_ ULONG BusNumber, _In_ ULONG SlotNumber, _In_opt_ PCM_RESOURCE_LIST ResourceList, _In_opt_ PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements, _In_ BOOLEAN ResourceAssigned, _Inout_ PDEVICE_OBJECT *DeviceObject)
Definition: pnpreport.c:148
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
Definition: device.c:1251
PDRIVER_ADD_DEVICE AddDevice
Definition: iotypes.h:2220
NTSTATUS NTAPI HalpAddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT TargetDevice)
Definition: halpnpdd.c:55
#define NULL
Definition: types.h:112
#define DPRINT
Definition: sndvol32.h:71

◆ HalpQueryCapabilities()

NTSTATUS NTAPI HalpQueryCapabilities ( IN PDEVICE_OBJECT  DeviceObject,
OUT PDEVICE_CAPABILITIES  Capabilities 
)

Definition at line 272 of file halpnpdd.c.

274 {
275  //PPDO_EXTENSION PdoExtension;
277  PAGED_CODE();
278 
279  /* Get the extension and check for valid version */
280  //PdoExtension = DeviceObject->DeviceExtension;
281  ASSERT(Capabilities->Version == 1);
282  if (Capabilities->Version == 1)
283  {
284  /* Can't lock or eject us */
285  Capabilities->LockSupported = FALSE;
286  Capabilities->EjectSupported = FALSE;
287 
288  /* Can't remove or dock us */
289  Capabilities->Removable = FALSE;
290  Capabilities->DockDevice = FALSE;
291 
292  /* Can't access us raw */
293  Capabilities->RawDeviceOK = FALSE;
294 
295  /* We have a unique ID, and don't bother the user */
296  Capabilities->UniqueID = TRUE;
297  Capabilities->SilentInstall = TRUE;
298 
299  /* Fill out the adress */
302 
303  /* Fill out latencies */
304  Capabilities->D1Latency = 0;
305  Capabilities->D2Latency = 0;
306  Capabilities->D3Latency = 0;
307 
308  /* Fill out supported device states */
313 
314  /* Done */
316  }
317  else
318  {
319  /* Fail */
321  }
322 
323  /* Return status */
324  return Status;
325 }
return STATUS_NOT_SUPPORTED
#define TRUE
Definition: types.h:120
LONG NTSTATUS
Definition: precomp.h:26
#define FALSE
Definition: types.h:117
_Must_inspect_result_ typedef _Out_ PHIDP_CAPS Capabilities
Definition: hidclass.h:103
Status
Definition: gdiplustypes.h:24
#define ASSERT(a)
Definition: mode.c:44
#define STATUS_SUCCESS
Definition: shellext.h:65
#define PAGED_CODE()

◆ HalpQueryDeviceRelations()

NTSTATUS NTAPI HalpQueryDeviceRelations ( IN PDEVICE_OBJECT  DeviceObject,
IN DEVICE_RELATION_TYPE  RelationType,
OUT PDEVICE_RELATIONS DeviceRelations 
)

Definition at line 154 of file halpnpdd.c.

157 {
158  EXTENSION_TYPE ExtensionType;
161  PDEVICE_RELATIONS PdoRelations, FdoRelations;
162  PDEVICE_OBJECT* ObjectEntry;
163  ULONG i = 0, PdoCount = 0;
164 
165  /* Get FDO device extension and PDO count */
166  FdoExtension = DeviceObject->DeviceExtension;
167  ExtensionType = FdoExtension->ExtensionType;
168 
169  /* What do they want? */
170  if (RelationType == BusRelations)
171  {
172  /* This better be an FDO */
173  if (ExtensionType == FdoExtensionType)
174  {
175  /* Count how many PDOs we have */
176  PdoExtension = FdoExtension->ChildPdoList;
177  while (PdoExtension)
178  {
179  /* Next one */
180  PdoExtension = PdoExtension->Next;
181  PdoCount++;
182  }
183 
184  /* Add the PDOs that already exist in the device relations */
185  if (*DeviceRelations)
186  {
187  PdoCount += (*DeviceRelations)->Count;
188  }
189 
190  /* Allocate our structure */
191  FdoRelations = ExAllocatePoolWithTag(PagedPool,
193  Objects) +
194  sizeof(PDEVICE_OBJECT) * PdoCount,
195  TAG_HAL);
196  if (!FdoRelations) return STATUS_INSUFFICIENT_RESOURCES;
197 
198  /* Save our count */
199  FdoRelations->Count = PdoCount;
200 
201  /* Query existing relations */
202  ObjectEntry = FdoRelations->Objects;
203  if (*DeviceRelations)
204  {
205  /* Check if there were any */
206  if ((*DeviceRelations)->Count)
207  {
208  /* Loop them all */
209  do
210  {
211  /* Copy into our structure */
212  *ObjectEntry++ = (*DeviceRelations)->Objects[i];
213  }
214  while (++i < (*DeviceRelations)->Count);
215  }
216 
217  /* Free existing structure */
218  ExFreePool(*DeviceRelations);
219  }
220 
221  /* Now check if we have a PDO list */
222  PdoExtension = FdoExtension->ChildPdoList;
223  if (PdoExtension)
224  {
225  /* Loop the PDOs */
226  do
227  {
228  /* Save our own PDO and reference it */
229  *ObjectEntry++ = PdoExtension->PhysicalDeviceObject;
230  ObReferenceObject(PdoExtension->PhysicalDeviceObject);
231 
232  /* Go to our next PDO */
233  PdoExtension = PdoExtension->Next;
234  }
235  while (PdoExtension);
236  }
237 
238  /* Return the new structure */
239  *DeviceRelations = FdoRelations;
240  return STATUS_SUCCESS;
241  }
242  }
243  else
244  {
245  /* The only other thing we support is a target relation for the PDO */
247  (ExtensionType == PdoExtensionType))
248  {
249  /* Only one entry */
250  PdoRelations = ExAllocatePoolWithTag(PagedPool,
251  sizeof(DEVICE_RELATIONS),
252  TAG_HAL);
253  if (!PdoRelations) return STATUS_INSUFFICIENT_RESOURCES;
254 
255  /* Fill it out and reference us */
256  PdoRelations->Count = 1;
257  PdoRelations->Objects[0] = DeviceObject;
259 
260  /* Return it */
261  *DeviceRelations = PdoRelations;
262  return STATUS_SUCCESS;
263  }
264  }
265 
266  /* We don't support anything else */
267  return STATUS_NOT_SUPPORTED;
268 }
return STATUS_NOT_SUPPORTED
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
PDEVICE_OBJECT Objects[1]
Definition: iotypes.h:2163
EXTENSION_TYPE
Definition: precomp.h:44
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
_In_ DEVICE_RELATION_TYPE RelationType
Definition: wdfdevice.h:1059
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
#define TAG_HAL
Definition: hal.h:61
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
#define ObReferenceObject
Definition: obfuncs.h:204
unsigned int ULONG
Definition: retypes.h:1
#define STATUS_SUCCESS
Definition: shellext.h:65
#define ExFreePool(addr)
Definition: env_spec_w32.h:352

◆ HalpQueryIdFdo()

NTSTATUS NTAPI HalpQueryIdFdo ( IN PDEVICE_OBJECT  DeviceObject,
IN BUS_QUERY_ID_TYPE  IdType,
OUT PUSHORT BusQueryId 
)

Definition at line 548 of file halpnpdd.c.

551 {
553  ULONG Length;
554  PWCHAR Id;
555  PWCHAR Buffer;
556 
557  /* What kind of ID is being requested? */
558  DPRINT("ID: %d\n", IdType);
559  switch (IdType)
560  {
561  case BusQueryDeviceID:
562  case BusQueryHardwareIDs:
563 
564  /* This is our hardware ID */
566  break;
567 
568  case BusQueryInstanceID:
569 
570  /* And our instance ID */
571  Id = L"0";
572  break;
573 
574  default:
575 
576  /* We don't support anything else */
577  return STATUS_NOT_SUPPORTED;
578  }
579 
580  /* Calculate the length */
581  Length = (wcslen(Id) * sizeof(WCHAR)) + sizeof(UNICODE_NULL);
582 
583  /* Allocate the buffer */
585  Length + sizeof(UNICODE_NULL),
586  TAG_HAL);
587  if (Buffer)
588  {
589  /* Copy the string and null-terminate it */
591  Buffer[Length / sizeof(WCHAR)] = UNICODE_NULL;
592 
593  /* Return string */
594  *BusQueryId = Buffer;
596  DPRINT("Returning: %S\n", *BusQueryId);
597  }
598  else
599  {
600  /* Fail */
602  }
603 
604  /* Return status */
605  return Status;
606 }
return STATUS_NOT_SUPPORTED
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
IN BOOLEAN OUT PSTR Buffer
Definition: progress.h:34
LONG NTSTATUS
Definition: precomp.h:26
uint16_t * PWCHAR
Definition: typedefs.h:56
DWORD Id
#define L(x)
Definition: ntvdm.h:50
#define UNICODE_NULL
Definition: bufpool.h:45
_In_ BUS_QUERY_ID_TYPE IdType
Definition: classpnp.h:374
Status
Definition: gdiplustypes.h:24
__wchar_t WCHAR
Definition: xmlstorage.h:180
PWCHAR HalHardwareIdString
Definition: halacpi.c:44
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
#define TAG_HAL
Definition: hal.h:61
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
unsigned int ULONG
Definition: retypes.h:1
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
#define STATUS_SUCCESS
Definition: shellext.h:65
#define DPRINT
Definition: sndvol32.h:71

◆ HalpQueryIdPdo()

NTSTATUS NTAPI HalpQueryIdPdo ( IN PDEVICE_OBJECT  DeviceObject,
IN BUS_QUERY_ID_TYPE  IdType,
OUT PUSHORT BusQueryId 
)

Definition at line 451 of file halpnpdd.c.

454 {
456  PDO_TYPE PdoType;
457  PWCHAR CurrentId;
458  WCHAR Id[100];
460  ULONG Length = 0;
461  PWCHAR Buffer;
462 
463  /* Get the PDO type */
464  PdoExtension = DeviceObject->DeviceExtension;
465  PdoType = PdoExtension->PdoType;
466 
467  /* What kind of ID is being requested? */
468  DPRINT("ID: %d\n", IdType);
469  switch (IdType)
470  {
471  case BusQueryDeviceID:
472  case BusQueryHardwareIDs:
473 
474  /* What kind of PDO is this? */
475  if (PdoType == AcpiPdo)
476  {
477  /* ACPI ID */
478  CurrentId = L"PCI_HAL\\PNP0A03";
479  RtlCopyMemory(Id, CurrentId, (wcslen(CurrentId) * sizeof(WCHAR)) + sizeof(UNICODE_NULL));
480  Length += (wcslen(CurrentId) * sizeof(WCHAR)) + sizeof(UNICODE_NULL);
481 
482  CurrentId = L"*PNP0A03";
483  RtlCopyMemory(&Id[wcslen(Id) + 1], CurrentId, (wcslen(CurrentId) * sizeof(WCHAR)) + sizeof(UNICODE_NULL));
484  Length += (wcslen(CurrentId) * sizeof(WCHAR)) + sizeof(UNICODE_NULL);
485  }
486 #if 0
487  else if (PdoType == WdPdo)
488  {
489  /* WatchDog ID */
490  CurrentId = L"ACPI_HAL\\PNP0C18";
491  RtlCopyMemory(Id, CurrentId, (wcslen(CurrentId) * sizeof(WCHAR)) + sizeof(UNICODE_NULL));
492  Length += (wcslen(CurrentId) * sizeof(WCHAR)) + sizeof(UNICODE_NULL);
493 
494  CurrentId = L"*PNP0C18";
495  RtlCopyMemory(&Id[wcslen(Id) + 1], CurrentId, (wcslen(CurrentId) * sizeof(WCHAR)) + sizeof(UNICODE_NULL));
496  Length += (wcslen(CurrentId) * sizeof(WCHAR)) + sizeof(UNICODE_NULL);
497  }
498 #endif
499  else
500  {
501  /* Unknown */
502  return STATUS_NOT_SUPPORTED;
503  }
504  break;
505 
506  case BusQueryInstanceID:
507 
508  /* Instance ID */
509  CurrentId = L"0";
510  RtlCopyMemory(Id, CurrentId, (wcslen(CurrentId) * sizeof(WCHAR)) + sizeof(UNICODE_NULL));
511  Length += (wcslen(CurrentId) * sizeof(WCHAR)) + sizeof(UNICODE_NULL);
512  break;
513 
515  default:
516 
517  /* We don't support anything else */
518  return STATUS_NOT_SUPPORTED;
519  }
520 
521  /* Allocate the buffer */
523  Length + sizeof(UNICODE_NULL),
524  TAG_HAL);
525  if (Buffer)
526  {
527  /* Copy the string and null-terminate it */
529  Buffer[Length / sizeof(WCHAR)] = UNICODE_NULL;
530 
531  /* Return string */
532  *BusQueryId = Buffer;
534  DPRINT("Returning: %S\n", *BusQueryId);
535  }
536  else
537  {
538  /* Fail */
540  }
541 
542  /* Return status */
543  return Status;
544 }
return STATUS_NOT_SUPPORTED
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
IN BOOLEAN OUT PSTR Buffer
Definition: progress.h:34
LONG NTSTATUS
Definition: precomp.h:26
uint16_t * PWCHAR
Definition: typedefs.h:56
DWORD Id
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
#define L(x)
Definition: ntvdm.h:50
#define UNICODE_NULL
Definition: bufpool.h:45
_In_ BUS_QUERY_ID_TYPE IdType
Definition: classpnp.h:374
Status
Definition: gdiplustypes.h:24
__wchar_t WCHAR
Definition: xmlstorage.h:180
enum _PDO_TYPE PDO_TYPE
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
#define TAG_HAL
Definition: hal.h:61
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
unsigned int ULONG
Definition: retypes.h:1
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
Definition: halpnpdd.c:24
#define STATUS_SUCCESS
Definition: shellext.h:65
#define DPRINT
Definition: sndvol32.h:71

◆ HalpQueryInterface()

NTSTATUS NTAPI HalpQueryInterface ( IN PDEVICE_OBJECT  DeviceObject,
IN CONST GUID InterfaceType,
IN USHORT  Version,
IN PVOID  InterfaceSpecificData,
IN ULONG  InterfaceBufferSize,
IN PINTERFACE  Interface,
OUT PULONG  Length 
)

Definition at line 140 of file halpnpdd.c.

147 {
149  return STATUS_NOT_SUPPORTED;
150 }
return STATUS_NOT_SUPPORTED
#define UNIMPLEMENTED
Definition: debug.h:115

◆ HalpQueryResourceRequirements()

NTSTATUS NTAPI HalpQueryResourceRequirements ( IN PDEVICE_OBJECT  DeviceObject,
OUT PIO_RESOURCE_REQUIREMENTS_LIST Requirements 
)

Definition at line 424 of file halpnpdd.c.

426 {
427  PPDO_EXTENSION DeviceExtension = DeviceObject->DeviceExtension;
428  PAGED_CODE();
429 
430  /* Only the ACPI PDO has requirements */
431  if (DeviceExtension->PdoType == AcpiPdo)
432  {
433  /* Query ACPI requirements */
434 // return HalpQueryAcpiResourceRequirements(Requirements);
435  return STATUS_SUCCESS;
436  }
437  else if (DeviceExtension->PdoType == WdPdo)
438  {
439  /* Watchdog doesn't */
440  return STATUS_NOT_SUPPORTED;
441  }
442  else
443  {
444  /* This shouldn't happen */
445  return STATUS_UNSUCCESSFUL;
446  }
447 }
return STATUS_NOT_SUPPORTED
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
PDO_TYPE PdoType
Definition: halpnpdd.c:42
Definition: halpnpdd.c:24
#define STATUS_SUCCESS
Definition: shellext.h:65
#define PAGED_CODE()

◆ HalpQueryResources()

NTSTATUS NTAPI HalpQueryResources ( IN PDEVICE_OBJECT  DeviceObject,
OUT PCM_RESOURCE_LIST Resources 
)

Definition at line 329 of file halpnpdd.c.

331 {
332  PPDO_EXTENSION DeviceExtension = DeviceObject->DeviceExtension;
335 // PIO_RESOURCE_REQUIREMENTS_LIST RequirementsList;
336 // PIO_RESOURCE_DESCRIPTOR Descriptor;
337 // PCM_PARTIAL_RESOURCE_DESCRIPTOR PartialDesc;
338 // ULONG i;
339  PAGED_CODE();
340 
341  /* Only the ACPI PDO has requirements */
342  if (DeviceExtension->PdoType == AcpiPdo)
343  {
344 #if 0
345  /* Query ACPI requirements */
347  if (!NT_SUCCESS(Status)) return Status;
348 
349  ASSERT(RequirementsList->AlternativeLists == 1);
350 #endif
351 
352  /* Allocate the resourcel ist */
354  sizeof(CM_RESOURCE_LIST),
355  TAG_HAL);
356  if (!ResourceList )
357  {
358  /* Fail, no memory */
360 // ExFreePoolWithTag(RequirementsList, TAG_HAL);
361  return Status;
362  }
363 
364  /* Initialize it */
366  ResourceList->Count = 1;
367 
368  /* Setup the list fields */
369  ResourceList->List[0].BusNumber = 0;
370  ResourceList->List[0].InterfaceType = PCIBus;
371  ResourceList->List[0].PartialResourceList.Version = 1;
372  ResourceList->List[0].PartialResourceList.Revision = 1;
373  ResourceList->List[0].PartialResourceList.Count = 0;
374 
375  /* Setup the first descriptor */
376  //PartialDesc = ResourceList->List[0].PartialResourceList.PartialDescriptors;
377 
378  /* Find the requirement descriptor for the SCI */
379 #if 0
380  for (i = 0; i < RequirementsList->List[0].Count; i++)
381  {
382  /* Get this descriptor */
383  Descriptor = &RequirementsList->List[0].Descriptors[i];
384  if (Descriptor->Type == CmResourceTypeInterrupt)
385  {
386  /* Copy requirements descriptor into resource descriptor */
387  PartialDesc->Type = CmResourceTypeInterrupt;
388  PartialDesc->ShareDisposition = Descriptor->ShareDisposition;
389  PartialDesc->Flags = Descriptor->Flags;
390  ASSERT(Descriptor->u.Interrupt.MinimumVector ==
391  Descriptor->u.Interrupt.MaximumVector);
392  PartialDesc->u.Interrupt.Vector = Descriptor->u.Interrupt.MinimumVector;
393  PartialDesc->u.Interrupt.Level = Descriptor->u.Interrupt.MinimumVector;
394  PartialDesc->u.Interrupt.Affinity = 0xFFFFFFFF;
395 
396  ResourceList->List[0].PartialResourceList.Count++;
397 
398  break;
399  }
400  }
401 #endif
402 
403  /* Return resources and success */
405 
406 // ExFreePoolWithTag(RequirementsList, TAG_HAL);
407 
408  return STATUS_SUCCESS;
409  }
410  else if (DeviceExtension->PdoType == WdPdo)
411  {
412  /* Watchdog doesn't */
413  return STATUS_NOT_SUPPORTED;
414  }
415  else
416  {
417  /* This shouldn't happen */
418  return STATUS_UNSUCCESSFUL;
419  }
420 }
return STATUS_NOT_SUPPORTED
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
Definition: wdfresource.h:339
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS NTAPI HalpQueryAcpiResourceRequirements(OUT PIO_RESOURCE_REQUIREMENTS_LIST *Requirements)
Definition: halacpi.c:1016
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
Definition: wdfresource.h:304
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
Status
Definition: gdiplustypes.h:24
#define ASSERT(a)
Definition: mode.c:44
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
#define ExAllocatePoolWithTag(hernya, size, tag)
Definition: env_spec_w32.h:350
#define TAG_HAL
Definition: hal.h:61
PDO_TYPE PdoType
Definition: halpnpdd.c:42
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define CmResourceTypeInterrupt
Definition: hwresource.cpp:124
_In_ WDFIORESREQLIST RequirementsList
Definition: wdfresource.h:65
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
Definition: halpnpdd.c:24
#define STATUS_SUCCESS
Definition: shellext.h:65
#define PAGED_CODE()

Variable Documentation

◆ HalpDriverObject

PDRIVER_OBJECT HalpDriverObject

Definition at line 49 of file halpnpdd.c.