diff --git a/reactos/drivers/multimedia/mpu401_ks/adapter.cpp b/reactos/drivers/multimedia/mpu401_ks/adapter.cpp new file mode 100644 index 00000000000..89c0704f307 --- /dev/null +++ b/reactos/drivers/multimedia/mpu401_ks/adapter.cpp @@ -0,0 +1,97 @@ +/* + ReactOS Operating System + MPU401 Example KS Driver + + AUTHORS: + Andrew Greenwood + + NOTES: + This is an example MPU401 driver. You can use DirectMusic instead with + this, by changing the CLSIDs accordingly. +*/ + +#define MAX_MINIPORTS 1 + +#define PUT_GUIDS_HERE + +#include + +extern "C" +NTSTATUS +StartDevice( + IN PDEVICE_OBJECT pDeviceObject, + IN PIRP pIrp, + IN PRESOURCELIST ResourceList) +{ + if ( ! ResourceList ) + return STATUS_INVALID_PARAMETER; + + if ( ResourceList->NumberOfEntries() == 0 ) + { + return STATUS_INSUFFICIENT_RESOURCES; + } + + PPORT port; + PMINIPORT miniport; + + NTSTATUS status; + + status = PcNewPort(&port, CLSID_PortMidi); + + if ( ! NT_SUCCESS(status) ) + { + return status; + } + + status = PcNewMiniport(&miniport, CLSID_MiniportDriverUart); + + if ( ! NT_SUCCESS(status) ) + { + return status; + } + + status = port->Init(pDeviceObject, pIrp, miniport, NULL, ResourceList); + + if ( ! NT_SUCCESS(status) ) + { + return status; + } + + status = PcRegisterSubdevice(pDeviceObject, L"Uart", port); + + if ( ! NT_SUCCESS(status) ) + { + /* just print an error here */ + } + + miniport->Release(); + port->Release(); + + return status; +} + + +extern "C" +NTSTATUS +AddDevice( + IN PVOID Context1, + IN PVOID Context2) +{ + return PcAddAdapterDevice((PDRIVER_OBJECT) Context1, + (PDEVICE_OBJECT) Context2, + StartDevice, + MAX_MINIPORTS, + 0); +} + + +extern "C" +NTSTATUS +DriverEntry( + IN PVOID Context1, + IN PVOID Context2) +{ + return PcInitializeAdapterDriver((PDRIVER_OBJECT) Context1, + (PUNICODE_STRING) Context2, + (PDRIVER_ADD_DEVICE) AddDevice); +}; diff --git a/reactos/drivers/multimedia/mpu401_ks/mpu401.def b/reactos/drivers/multimedia/mpu401_ks/mpu401.def new file mode 100644 index 00000000000..1a605ebb6b5 --- /dev/null +++ b/reactos/drivers/multimedia/mpu401_ks/mpu401.def @@ -0,0 +1,6 @@ +; +; Exports definition file for mpu401_ks.sys +; +EXPORTS +DriverEntry@8 + diff --git a/reactos/drivers/multimedia/mpu401_ks/mpu401.rbuild b/reactos/drivers/multimedia/mpu401_ks/mpu401.rbuild new file mode 100644 index 00000000000..12199fea182 --- /dev/null +++ b/reactos/drivers/multimedia/mpu401_ks/mpu401.rbuild @@ -0,0 +1,10 @@ + + . + .. + + ntoskrnl + portcls + + mpu401.rc + adapter.cpp + diff --git a/reactos/drivers/multimedia/mpu401_ks/mpu401.rc b/reactos/drivers/multimedia/mpu401_ks/mpu401.rc new file mode 100644 index 00000000000..6bfc28f2197 --- /dev/null +++ b/reactos/drivers/multimedia/mpu401_ks/mpu401.rc @@ -0,0 +1,5 @@ +#define REACTOS_VERSION_DLL +#define REACTOS_STR_FILE_DESCRIPTION "MPU401 KS Driver\0" +#define REACTOS_STR_INTERNAL_NAME "mpu401_ks\0" +#define REACTOS_STR_ORIGINAL_FILENAME "mpu401_ks.sys\0" +#include