diff --git a/reactos/drivers/base/serial/circularbuffer.c b/reactos/drivers/base/serial/circularbuffer.c index bda1d5cb8ee..a17f2951726 100644 --- a/reactos/drivers/base/serial/circularbuffer.c +++ b/reactos/drivers/base/serial/circularbuffer.c @@ -4,7 +4,7 @@ * FILE: drivers/dd/serial/circularbuffer.c * PURPOSE: Operations on a circular buffer * - * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.com) + * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org) */ #define NDEBUG diff --git a/reactos/drivers/base/serial/cleanup.c b/reactos/drivers/base/serial/cleanup.c index a09a584b57e..4c9c95b1dd1 100644 --- a/reactos/drivers/base/serial/cleanup.c +++ b/reactos/drivers/base/serial/cleanup.c @@ -4,13 +4,13 @@ * FILE: drivers/dd/serial/cleanup.c * PURPOSE: Serial IRP_MJ_CLEANUP operations * - * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.com) + * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org) */ #define NDEBUG #include "serial.h" -NTSTATUS STDCALL +NTSTATUS NTAPI SerialCleanup( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) diff --git a/reactos/drivers/base/serial/close.c b/reactos/drivers/base/serial/close.c index d420b9824c5..1c336beab70 100644 --- a/reactos/drivers/base/serial/close.c +++ b/reactos/drivers/base/serial/close.c @@ -4,13 +4,13 @@ * FILE: drivers/dd/serial/close.c * PURPOSE: Serial IRP_MJ_CLOSE operations * - * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.com) + * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org) */ #define NDEBUG #include "serial.h" -NTSTATUS STDCALL +NTSTATUS NTAPI SerialClose( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) diff --git a/reactos/drivers/base/serial/create.c b/reactos/drivers/base/serial/create.c index dbcea856f7f..f6cf90a83bd 100644 --- a/reactos/drivers/base/serial/create.c +++ b/reactos/drivers/base/serial/create.c @@ -4,13 +4,13 @@ * FILE: drivers/dd/serial/create.c * PURPOSE: Serial IRP_MJ_CREATE operations * - * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.com) + * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org) */ #define NDEBUG #include "serial.h" -NTSTATUS STDCALL +NTSTATUS NTAPI SerialCreate( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) diff --git a/reactos/drivers/base/serial/devctrl.c b/reactos/drivers/base/serial/devctrl.c index dd6be39709f..0cbf6027310 100644 --- a/reactos/drivers/base/serial/devctrl.c +++ b/reactos/drivers/base/serial/devctrl.c @@ -4,7 +4,7 @@ * FILE: drivers/dd/serial/devctrl.c * PURPOSE: Serial IRP_MJ_DEVICE_CONTROL operations * - * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.com) + * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org) */ #define NDEBUG @@ -45,7 +45,7 @@ SerialGetUserBuffers( } } -NTSTATUS STDCALL +NTSTATUS NTAPI SerialSetBaudRate( IN PSERIAL_DEVICE_EXTENSION DeviceExtension, IN ULONG NewBaudRate) @@ -55,6 +55,9 @@ SerialSetBaudRate( PUCHAR ComPortBase = (PUCHAR)DeviceExtension->BaseAddress; NTSTATUS Status = STATUS_SUCCESS; + if (NewBaudRate == 0) + return STATUS_INVALID_PARAMETER; + divisor = (USHORT)(BAUD_CLOCK / (CLOCKS_PER_BIT * NewBaudRate)); BaudRate = BAUD_CLOCK / (CLOCKS_PER_BIT * divisor); @@ -80,7 +83,7 @@ SerialSetBaudRate( return Status; } -NTSTATUS STDCALL +NTSTATUS NTAPI SerialSetLineControl( IN PSERIAL_DEVICE_EXTENSION DeviceExtension, IN PSERIAL_LINE_CONTROL NewSettings) @@ -272,7 +275,7 @@ SerialGetCommStatus( return STATUS_SUCCESS; } -NTSTATUS STDCALL +NTSTATUS NTAPI SerialDeviceControl( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) diff --git a/reactos/drivers/base/serial/info.c b/reactos/drivers/base/serial/info.c index e3f7f15232f..efec45941fb 100644 --- a/reactos/drivers/base/serial/info.c +++ b/reactos/drivers/base/serial/info.c @@ -4,13 +4,13 @@ * FILE: drivers/dd/serial/info.c * PURPOSE: Serial IRP_MJ_QUERY_INFORMATION operations * - * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.com) + * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org) */ #define NDEBUG #include "serial.h" -NTSTATUS STDCALL +NTSTATUS NTAPI SerialQueryInformation( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) diff --git a/reactos/drivers/base/serial/legacy.c b/reactos/drivers/base/serial/legacy.c index 437a944b2b6..9751568d322 100644 --- a/reactos/drivers/base/serial/legacy.c +++ b/reactos/drivers/base/serial/legacy.c @@ -4,7 +4,7 @@ * FILE: drivers/bus/serial/legacy.c * PURPOSE: Legacy serial port enumeration * - * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.com) + * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org) * Mark Junker (mjscod@gmx.de) */ diff --git a/reactos/drivers/base/serial/misc.c b/reactos/drivers/base/serial/misc.c index 5d9adab3ba6..60490eacaf2 100644 --- a/reactos/drivers/base/serial/misc.c +++ b/reactos/drivers/base/serial/misc.c @@ -4,14 +4,14 @@ * FILE: drivers/dd/serial/misc.c * PURPOSE: Misceallenous operations * - * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.com) + * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org) */ /* FIXME: call IoAcquireRemoveLock/IoReleaseRemoveLock around each I/O operation */ #define NDEBUG #include "serial.h" -static NTSTATUS STDCALL +static NTSTATUS NTAPI ForwardIrpAndWaitCompletion( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, @@ -50,7 +50,7 @@ ForwardIrpAndWait( return Status; } -NTSTATUS STDCALL +NTSTATUS NTAPI ForwardIrpAndForget( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) @@ -63,7 +63,7 @@ ForwardIrpAndForget( return IoCallDriver(LowerDevice, Irp); } -VOID STDCALL +VOID NTAPI SerialReceiveByte( IN PKDPC Dpc, IN PVOID pDeviceExtension, // real type PSERIAL_DEVICE_EXTENSION @@ -100,7 +100,7 @@ SerialReceiveByte( WRITE_PORT_UCHAR(SER_IER(ComPortBase), IER | SR_IER_DATA_RECEIVED); } -VOID STDCALL +VOID NTAPI SerialSendByte( IN PKDPC Dpc, IN PVOID pDeviceExtension, // real type PSERIAL_DEVICE_EXTENSION @@ -138,7 +138,7 @@ SerialSendByte( KeReleaseSpinLock(&DeviceExtension->OutputBufferLock, Irql); } -BOOLEAN STDCALL +BOOLEAN NTAPI SerialInterruptService( IN PKINTERRUPT Interrupt, IN OUT PVOID ServiceContext) @@ -180,6 +180,14 @@ SerialInterruptService( else ; /* FIXME: stop reception */ } + if (MSR & SR_MSR_RI_CHANGED) + { + DPRINT("SR_MSR_RI_CHANGED changed: now %d\n", MSR & SI_MSR_RI); + } + if (MSR & SR_MSR_DCD_CHANGED) + { + DPRINT("SR_MSR_DCD_CHANGED changed: now %d\n", MSR & SR_MSR_DCD); + } IER = READ_PORT_UCHAR(SER_IER(ComPortBase)); WRITE_PORT_UCHAR(SER_IER(ComPortBase), IER | SR_IER_MSR_CHANGE); return TRUE; diff --git a/reactos/drivers/base/serial/pnp.c b/reactos/drivers/base/serial/pnp.c index a49f0dc0da0..41b6ac49677 100644 --- a/reactos/drivers/base/serial/pnp.c +++ b/reactos/drivers/base/serial/pnp.c @@ -4,7 +4,7 @@ * FILE: drivers/dd/serial/pnp.c * PURPOSE: Serial IRP_MJ_PNP operations * - * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.com) + * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org) */ /* FIXME: call IoAcquireRemoveLock/IoReleaseRemoveLock around each I/O operation */ @@ -12,7 +12,7 @@ #define NDEBUG #include "serial.h" -NTSTATUS STDCALL +NTSTATUS NTAPI SerialAddDeviceInternal( IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT Pdo, @@ -104,7 +104,7 @@ ByeBye: return Status; } -NTSTATUS STDCALL +NTSTATUS NTAPI SerialAddDevice( IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT Pdo) @@ -122,7 +122,7 @@ SerialAddDevice( return SerialAddDeviceInternal(DriverObject, Pdo, UartUnknown, NULL, NULL); } -NTSTATUS STDCALL +NTSTATUS NTAPI SerialPnpStartDevice( IN PDEVICE_OBJECT DeviceObject, IN PCM_RESOURCE_LIST ResourceList, @@ -294,7 +294,7 @@ SerialPnpStartDevice( return STATUS_SUCCESS; } -NTSTATUS STDCALL +NTSTATUS NTAPI SerialPnp( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) diff --git a/reactos/drivers/base/serial/power.c b/reactos/drivers/base/serial/power.c index 2b24c14e866..717606791de 100644 --- a/reactos/drivers/base/serial/power.c +++ b/reactos/drivers/base/serial/power.c @@ -4,13 +4,13 @@ * FILE: drivers/dd/serial/power.c * PURPOSE: Serial IRP_MJ_POWER operations * - * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.com) + * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org) */ #define NDEBUG #include "serial.h" -NTSTATUS STDCALL +NTSTATUS NTAPI SerialPower( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) diff --git a/reactos/drivers/base/serial/rw.c b/reactos/drivers/base/serial/rw.c index b9b6203afd0..4d14b74f89c 100644 --- a/reactos/drivers/base/serial/rw.c +++ b/reactos/drivers/base/serial/rw.c @@ -4,7 +4,7 @@ * FILE: drivers/dd/serial/create.c * PURPOSE: Serial IRP_MJ_READ/IRP_MJ_WRITE operations * - * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.com) + * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org) */ #define NDEBUG @@ -113,7 +113,7 @@ ReadBytes( Irp->IoStatus.Status = STATUS_SUCCESS; } -static VOID STDCALL +static VOID NTAPI SerialReadWorkItem( IN PDEVICE_OBJECT DeviceObject, IN PVOID pWorkItemData /* real type PWORKITEM_DATA */) @@ -134,7 +134,7 @@ SerialReadWorkItem( ExFreePoolWithTag(pWorkItemData, SERIAL_TAG); } -NTSTATUS STDCALL +NTSTATUS NTAPI SerialRead( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) @@ -245,7 +245,7 @@ ByeBye: return Status; } -NTSTATUS STDCALL +NTSTATUS NTAPI SerialWrite( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) diff --git a/reactos/drivers/base/serial/serial.c b/reactos/drivers/base/serial/serial.c index c8d2d5a6e3c..b9ec2b7d909 100644 --- a/reactos/drivers/base/serial/serial.c +++ b/reactos/drivers/base/serial/serial.c @@ -4,13 +4,13 @@ * FILE: drivers/dd/serial/serial.c * PURPOSE: Serial driver loading/unloading * - * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.com) + * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org) */ //#define NDEBUG #include "serial.h" -static VOID STDCALL +static VOID NTAPI DriverUnload(IN PDRIVER_OBJECT DriverObject) { // nothing to do here yet @@ -19,7 +19,7 @@ DriverUnload(IN PDRIVER_OBJECT DriverObject) /* * Standard DriverEntry method. */ -NTSTATUS STDCALL +NTSTATUS NTAPI DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegPath) diff --git a/reactos/drivers/base/serial/serial.h b/reactos/drivers/base/serial/serial.h index f2999488e91..9a7c2f42677 100644 --- a/reactos/drivers/base/serial/serial.h +++ b/reactos/drivers/base/serial/serial.h @@ -4,7 +4,7 @@ * FILE: drivers/dd/serial/serial.h * PURPOSE: Serial driver header * - * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.com) + * PROGRAMMERS: Hervé Poussineau (hpoussin@reactos.org) */ #include @@ -15,8 +15,6 @@ #if defined(__GNUC__) #include #elif defined(_MSC_VER) - #define STDCALL - #define DPRINT1 DbgPrint("(%s:%d) ", __FILE__, __LINE__), DbgPrint #define CHECKPOINT1 DbgPrint("(%s:%d)\n", __FILE__, __LINE__) #define DPRINT @@ -31,12 +29,14 @@ #define PST_RS232 1 #define COMMPROP_INITIALIZED 0xE73CF52E -/* FIXME: I don't know why it is not defined anywhere... */ -NTSTATUS STDCALL +#ifndef _NTIFS_ +/* Why is it only defined in ntifs.h file? */ +NTSTATUS NTAPI IoAttachDeviceToDeviceStackSafe( IN PDEVICE_OBJECT SourceDevice, IN PDEVICE_OBJECT TargetDevice, OUT PDEVICE_OBJECT *AttachedToDeviceObject); +#endif typedef enum { @@ -129,45 +129,45 @@ typedef struct _WORKITEM_DATA #define SER_THR(x) ((x)+0) /* Transmit Register */ #define SER_DLL(x) ((x)+0) /* Baud Rate Divisor LSB */ #define SER_IER(x) ((x)+1) /* Interrupt Enable Register */ -#define SR_IER_DATA_RECEIVED 0x01 -#define SR_IER_THR_EMPTY 0x02 -#define SR_IER_LSR_CHANGE 0x04 -#define SR_IER_MSR_CHANGE 0x08 -#define SR_IER_SLEEP_MODE 0x10 /* Uart >= 16750 */ -#define SR_IER_LOW_POWER 0x20 /* Uart >= 16750 */ +#define SR_IER_DATA_RECEIVED 0x01 +#define SR_IER_THR_EMPTY 0x02 +#define SR_IER_LSR_CHANGE 0x04 +#define SR_IER_MSR_CHANGE 0x08 +#define SR_IER_SLEEP_MODE 0x10 /* Uart >= 16750 */ +#define SR_IER_LOW_POWER 0x20 /* Uart >= 16750 */ #define SER_DLM(x) ((x)+1) /* Baud Rate Divisor MSB */ #define SER_IIR(x) ((x)+2) /* Interrupt Identification Register */ -#define SR_IIR_SELF 0x00 -#define SR_IIR_ID_MASK 0x07 -#define SR_IIR_MSR_CHANGE SR_IIR_SELF +#define SR_IIR_SELF 0x00 +#define SR_IIR_ID_MASK 0x07 +#define SR_IIR_MSR_CHANGE SR_IIR_SELF #define SR_IIR_THR_EMPTY (SR_IIR_SELF | 2) #define SR_IIR_DATA_RECEIVED (SR_IIR_SELF | 4) #define SR_IIR_ERROR (SR_IIR_SELF | 6) #define SER_FCR(x) ((x)+2) /* FIFO Control Register (Uart >= 16550A) */ -#define SR_FCR_ENABLE_FIFO 0x01 -#define SR_FCR_CLEAR_RCVR (0x02 | SR_FCR_ENABLE_FIFO) -#define SR_FCR_CLEAR_XMIT (0x04 | SR_FCR_ENABLE_FIFO) -#define SR_FCR_1_BYTE (0x00 | SR_FCR_ENABLE_FIFO) -#define SR_FCR_4_BYTES (0x40 | SR_FCR_ENABLE_FIFO) -#define SR_FCR_8_BYTES (0x80 | SR_FCR_ENABLE_FIFO) -#define SR_FCR_14_BYTES (0xC0 | SR_FCR_ENABLE_FIFO) +#define SR_FCR_ENABLE_FIFO 0x01 +#define SR_FCR_CLEAR_RCVR (0x02 | SR_FCR_ENABLE_FIFO) +#define SR_FCR_CLEAR_XMIT (0x04 | SR_FCR_ENABLE_FIFO) +#define SR_FCR_1_BYTE (0x00 | SR_FCR_ENABLE_FIFO) +#define SR_FCR_4_BYTES (0x40 | SR_FCR_ENABLE_FIFO) +#define SR_FCR_8_BYTES (0x80 | SR_FCR_ENABLE_FIFO) +#define SR_FCR_14_BYTES (0xC0 | SR_FCR_ENABLE_FIFO) #define SER_LCR(x) ((x)+3) /* Line Control Register */ -#define SR_LCR_CS5 0x00 -#define SR_LCR_CS6 0x01 -#define SR_LCR_CS7 0x02 -#define SR_LCR_CS8 0x03 -#define SR_LCR_ST1 0x00 -#define SR_LCR_ST2 0x04 -#define SR_LCR_PNO 0x00 -#define SR_LCR_POD 0x08 -#define SR_LCR_PEV 0x18 -#define SR_LCR_PMK 0x28 -#define SR_LCR_PSP 0x38 -#define SR_LCR_BRK 0x40 -#define SR_LCR_DLAB 0x80 +#define SR_LCR_CS5 0x00 +#define SR_LCR_CS6 0x01 +#define SR_LCR_CS7 0x02 +#define SR_LCR_CS8 0x03 +#define SR_LCR_ST1 0x00 +#define SR_LCR_ST2 0x04 +#define SR_LCR_PNO 0x00 +#define SR_LCR_POD 0x08 +#define SR_LCR_PEV 0x18 +#define SR_LCR_PMK 0x28 +#define SR_LCR_PSP 0x38 +#define SR_LCR_BRK 0x40 +#define SR_LCR_DLAB 0x80 #define SER_MCR(x) ((x)+4) /* Modem Control Register */ -#define SR_MCR_DTR 0x01 -#define SR_MCR_RTS 0x02 +#define SR_MCR_DTR SERIAL_DTR_STATE +#define SR_MCR_RTS SERIAL_RTS_STATE #define SER_LSR(x) ((x)+5) /* Line Status Register */ #define SR_LSR_DATA_RECEIVED 0x01 #define SR_LSR_OVERRUN_ERROR 0x02 @@ -182,11 +182,11 @@ typedef struct _WORKITEM_DATA #define SR_MSR_DSR_CHANGED 0x02 #define SR_MSR_RI_CHANGED 0x04 #define SR_MSR_DCD_CHANGED 0x08 -#define SR_MSR_CTS 0x10 /* Clear To Send */ -#define SR_MSR_DSR 0x20 /* Data Set Ready */ -#define SI_MSR_RI 0x40 /* Ring Indicator */ -#define SR_MSR_DCD 0x80 /* Data Carrier Detect */ -#define SER_SCR(x) ((x)+7) /* Scratch Pad Register */ +#define SR_MSR_CTS SERIAL_CTS_STATE /* Clear To Send */ +#define SR_MSR_DSR SERIAL_DSR_STATE /* Data Set Ready */ +#define SI_MSR_RI SERIAL_RI_STATE /* Ring Indicator */ +#define SR_MSR_DCD SERIAL_DCD_STATE /* Data Carrier Detect */ +#define SER_SCR(x) ((x)+7) /* Scratch Pad Register, Uart >= Uart16450 */ /************************************ circularbuffer.c */ @@ -221,45 +221,45 @@ IncreaseCircularBufferSize( /************************************ cleanup.c */ -NTSTATUS STDCALL +NTSTATUS NTAPI SerialCleanup( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); /************************************ close.c */ -NTSTATUS STDCALL +NTSTATUS NTAPI SerialClose( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); /************************************ create.c */ -NTSTATUS STDCALL +NTSTATUS NTAPI SerialCreate( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); /************************************ devctrl.c */ -NTSTATUS STDCALL +NTSTATUS NTAPI SerialDeviceControl( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); -NTSTATUS STDCALL +NTSTATUS NTAPI SerialSetBaudRate( IN PSERIAL_DEVICE_EXTENSION DeviceExtension, IN ULONG NewBaudRate); -NTSTATUS STDCALL +NTSTATUS NTAPI SerialSetLineControl( IN PSERIAL_DEVICE_EXTENSION DeviceExtension, IN PSERIAL_LINE_CONTROL NewSettings); /************************************ info.c */ -NTSTATUS STDCALL +NTSTATUS NTAPI SerialQueryInformation( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); @@ -277,33 +277,33 @@ ForwardIrpAndWait( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); -NTSTATUS STDCALL +NTSTATUS NTAPI ForwardIrpAndForget( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); -VOID STDCALL +VOID NTAPI SerialReceiveByte( IN PKDPC Dpc, IN PVOID pDeviceExtension, // real type PSERIAL_DEVICE_EXTENSION IN PVOID pByte, // real type UCHAR IN PVOID Unused); -VOID STDCALL +VOID NTAPI SerialSendByte( IN PKDPC Dpc, IN PVOID pDeviceExtension, // real type PSERIAL_DEVICE_EXTENSION IN PVOID Unused1, IN PVOID Unused2); -BOOLEAN STDCALL +BOOLEAN NTAPI SerialInterruptService( IN PKINTERRUPT Interrupt, IN OUT PVOID ServiceContext); /************************************ pnp.c */ -NTSTATUS STDCALL +NTSTATUS NTAPI SerialAddDeviceInternal( IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT Pdo, @@ -311,44 +311,37 @@ SerialAddDeviceInternal( IN PULONG pComPortNumber OPTIONAL, OUT PDEVICE_OBJECT* pFdo OPTIONAL); -NTSTATUS STDCALL +NTSTATUS NTAPI SerialAddDevice( IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT Pdo); -NTSTATUS STDCALL +NTSTATUS NTAPI SerialPnpStartDevice( IN PDEVICE_OBJECT DeviceObject, IN PCM_RESOURCE_LIST ResourceList, IN PCM_RESOURCE_LIST ResourceListTranslated); -NTSTATUS STDCALL +NTSTATUS NTAPI SerialPnp( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); /************************************ power.c */ -NTSTATUS STDCALL +NTSTATUS NTAPI SerialPower( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); /************************************ rw.c */ -NTSTATUS STDCALL +NTSTATUS NTAPI SerialRead( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); -NTSTATUS STDCALL +NTSTATUS NTAPI SerialWrite( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp); - -/************************************ serial.c */ - -NTSTATUS STDCALL -DriverEntry( - IN PDRIVER_OBJECT DriverObject, - IN PUNICODE_STRING RegPath);