ReactOS 0.4.16-dev-340-g0540c21
control.c File Reference
#include "condrv.h"
#include <condrv/ntddcon.h>
#include <debug.h>
Include dependency graph for control.c:

Go to the source code of this file.

Macros

#define NDEBUG
 

Functions

NTSTATUS NTAPI ConDrvCreateController (IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
 
NTSTATUS NTAPI ConDrvDeleteController (IN PDRIVER_OBJECT DriverObject)
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 15 of file control.c.

Function Documentation

◆ ConDrvCreateController()

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

Definition at line 21 of file control.c.

23{
25 UNICODE_STRING DeviceName, SymlinkName;
27 PDEVICE_OBJECT Controller = NULL;
28
29 DPRINT1("Create the Controller device...\n");
30
33
34 /* Get the driver extension */
37
38 /* Create the Controller device, if it doesn't exist */
40 0,
44 FALSE,
45 &Controller);
46 if (!NT_SUCCESS(Status)) goto Done;
47
48 Status = IoCreateSymbolicLink(&SymlinkName, &DeviceName);
49 if (!NT_SUCCESS(Status))
50 {
51 IoDeleteDevice(Controller);
52 goto Done;
53 }
54
55 Controller->Flags &= ~DO_DEVICE_INITIALIZING;
56
57 /* Save the Controller device */
58 DriverExtension->Controller = Controller;
59
60Done:
61 DPRINT1("Done, Status = 0x%08lx\n", Status);
62 return Status;
63}
LONG NTSTATUS
Definition: precomp.h:26
#define DPRINT1
Definition: precomp.h:8
#define FILE_DEVICE_SECURE_OPEN
Definition: cdrw_usr.h:46
struct _CONDRV_DRIVER * PCONDRV_DRIVER
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:33
Status
Definition: gdiplustypes.h:25
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define DD_CONDRV_CTRL_DEVICE_NAME_U
Definition: ntddcon.h:78
#define DD_CONDRV_CTRL_SYMLNK_NAME_U
Definition: ntddcon.h:80
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
VOID NTAPI IoDeleteDevice(IN PDEVICE_OBJECT DeviceObject)
Definition: device.c:1251
PVOID NTAPI IoGetDriverObjectExtension(IN PDRIVER_OBJECT DriverObject, IN PVOID ClientIdentificationAddress)
Definition: driver.c:1904
PPCI_DRIVER_EXTENSION DriverExtension
Definition: pci.c:31
#define FILE_DEVICE_UNKNOWN
Definition: winioctl.h:79
#define STATUS_SUCCESS
Definition: shellext.h:65
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
Definition: wdfdevice.h:3275
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
Definition: wdfdriver.h:213

Referenced by DriverEntry().

◆ ConDrvDeleteController()

NTSTATUS NTAPI ConDrvDeleteController ( IN PDRIVER_OBJECT  DriverObject)

Definition at line 66 of file control.c.

67{
69 PDEVICE_OBJECT Controller;
70 UNICODE_STRING SymlinkName;
71
72 DPRINT1("Delete the Controller device...\n");
73
74 /* Retrieve the Controller device */
76 if (!Controller) return STATUS_OBJECT_TYPE_MISMATCH;
77
79 IoDeleteSymbolicLink(&SymlinkName);
80
81 /* Delete the controller device itself */
82 IoDeleteDevice(Controller);
83
84 DPRINT1("Done, Status = 0x%08lx\n", Status);
85 return Status;
86}
#define STATUS_OBJECT_TYPE_MISMATCH
Definition: d3dkmdt.h:46

Referenced by ConDrvUnload().