[ros-diffs] [silverblade] 33692: Added NTDDSND.H which defines IOCTL codes, structures and other definitions for NT4 style audio drivers. Cleaned out sb16_nt4 directory in preparation of rewrite.

silverblade at svn.reactos.org silverblade at svn.reactos.org
Sun May 25 12:32:57 CEST 2008


Author: silverblade
Date: Sun May 25 05:32:57 2008
New Revision: 33692

URL: http://svn.reactos.org/svn/reactos?rev=33692&view=rev
Log:
Added NTDDSND.H which defines IOCTL codes, structures and other definitions
for NT4 style audio drivers.
Cleaned out sb16_nt4 directory in preparation of rewrite.


Added:
    branches/silverblade-audio/include/ddk/ntddsnd.h   (with props)
Removed:
    branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/control.c
    branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/interrupt.c
    branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/main.c
    branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sndblst.h
Modified:
    branches/silverblade-audio/drivers/multimedia/audio/directory.rbuild
    branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sb16_nt4.def
    branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sb16_nt4.rbuild

Modified: branches/silverblade-audio/drivers/multimedia/audio/directory.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/silverblade-audio/drivers/multimedia/audio/directory.rbuild?rev=33692&r1=33691&r2=33692&view=diff
==============================================================================
--- branches/silverblade-audio/drivers/multimedia/audio/directory.rbuild [iso-8859-1] (original)
+++ branches/silverblade-audio/drivers/multimedia/audio/directory.rbuild [iso-8859-1] Sun May 25 05:32:57 2008
@@ -1,11 +1,12 @@
 <?xml version="1.0"?>
 <!DOCTYPE group SYSTEM "../../../tools/rbuild/project.dtd">
 <group xmlns:xi="http://www.w3.org/2001/XInclude">
+	<directory name="sb16_nt4">
+		<xi:include href="sb16_nt4/sb16_nt4.rbuild" />
+	</directory>
+
 	<!--directory name="mpu401_nt4">
 		<xi:include href="mpu401_nt4/mpu401.rbuild" />
-	</directory>
-	<directory name="sb16_nt4">
-		<xi:include href="sb16_nt4/sb16_nt4.rbuild" />
 	</directory>
 	<directory name="sndblst">
 		<xi:include href="sndblst/sndblst.rbuild" />

Removed: branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/control.c
URL: http://svn.reactos.org/svn/reactos/branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/control.c?rev=33691&view=auto
==============================================================================
--- branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/control.c [iso-8859-1] (original)
+++ branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/control.c (removed)
@@ -1,222 +1,0 @@
-#include <sndblst.h>
-
-/*
-    TODO: MmMapIoSpace()
-*/
-
-/*
-    This checks the read or write status port of the device.
-*/
-
-BOOLEAN
-WaitForReady(
-    PSOUND_BLASTER_PARAMETERS SBDevice,
-    UCHAR Port)
-{
-    ULONG timeout = SB_TIMEOUT;
-    BOOL ready = FALSE;
-
-    while ( ( ! ready ) && ( timeout > 0 ) )
-    {
-        if ( SbRead(SBDevice, Port) & 0x80 )
-            return TRUE;
-
-        timeout --;
-    }
-
-    return FALSE;
-}
-
-BOOLEAN
-SbWriteData(
-    PSOUND_BLASTER_PARAMETERS SBDevice,
-    UCHAR Data)
-{
-    if ( ! WaitToWrite(SBDevice) )
-        return FALSE;
-
-    DPRINT("Writing 0x%x to Sound Blaster card (data)\n", Data);
-    SbWrite(SBDevice, SB_WRITE_DATA_PORT, Data);
-
-    return TRUE;
-}
-
-BOOLEAN
-SbReadData(
-    PSOUND_BLASTER_PARAMETERS SBDevice,
-    PUCHAR Data)
-{
-    if ( ! WaitToWrite(SBDevice) )
-        return FALSE;
-
-    *Data = SbRead(SBDevice, SB_READ_DATA_PORT);
-    DPRINT("Read 0x%x from Sound Blaster card (data)\n", *Data);
-
-    return TRUE;
-}
-
-BOOLEAN
-ResetSoundBlaster(
-    PSOUND_BLASTER_PARAMETERS SBDevice)
-{
-    BOOLEAN acked = FALSE;
-    ULONG timeout;
-
-    SbWriteReset(SBDevice, 0x01);
-    for (timeout = 0; timeout < 30000; timeout ++ );
-    SbWriteReset(SBDevice, 0x00);
-
-    DPRINT("Waiting for SB to acknowledge our reset request\n");
-
-    if ( ! WaitToRead(SBDevice) )
-    {
-        DPRINT("Didn't get an ACK :(\n");
-        return FALSE;
-    }
-
-    timeout = 0;
-
-    while ( ( ! acked ) && ( timeout < SB_TIMEOUT ) )
-    {
-        acked = ( SbReadDataWithoutWait(SBDevice) == SB_DSP_READY );
-        timeout ++;
-    }
-
-    if ( ! acked )
-    {
-        DPRINT("Didn't get an ACK :(\n");
-        return FALSE;
-    }
-
-    return TRUE;
-}
-
-ULONG
-GetSoundBlasterModel(
-    PSOUND_BLASTER_PARAMETERS SBDevice)
-{
-    UCHAR MajorVer, MinorVer;
-
-    DPRINT("Querying DSP version\n");
-
-    if ( ! SbWriteData(SBDevice, SbGetDspVersion) )
-        return NotDetected;
-
-    if ( ! WaitToRead(SBDevice) )
-        return NotDetected;
-
-    if ( SbReadData(SBDevice, &MajorVer) )
-    {
-        if ( SbReadData(SBDevice, &MinorVer) )
-        {
-            DPRINT("Version %d.%d\n", MajorVer, MinorVer);
-
-            SBDevice->dsp_version = (MajorVer * 256) + MinorVer;
-
-            if ( SBDevice->dsp_version < 0x0200 )
-                return SoundBlaster;
-            else if ( ( SBDevice->dsp_version & 0xFF00 ) == 0x0200 )
-                return SoundBlaster2;
-            else if ( ( SBDevice->dsp_version & 0xFF00 ) == 0x0300 )
-                return SoundBlasterPro;
-            else if ( SBDevice->dsp_version >= 0x0400 )
-                return SoundBlaster16;
-
-            return NotDetected;
-        }
-    }
-
-    return NotDetected;
-}
-
-
-BOOLEAN
-IsSampleRateCompatible(
-    PSOUND_BLASTER_PARAMETERS SBDevice,
-    ULONG SampleRate)
-{
-    /* TODO */
-    return TRUE;
-}
-
-BOOLEAN
-SetOutputSampleRate(
-    PSOUND_BLASTER_PARAMETERS SBDevice,
-    ULONG SampleRate)
-{
-    /* Only works for DSP v4.xx */
-    DPRINT("Setting sample rate\n");
-
-    SbWriteData(SBDevice, SbSetOutputRate);
-    SbWriteData(SBDevice, SampleRate / 256);
-    SbWriteData(SBDevice, SampleRate % 256);
-
-    return TRUE;
-}
-
-BOOLEAN
-EnableSpeaker(
-    PSOUND_BLASTER_PARAMETERS SBDevice)
-{
-    DPRINT("Enabling speaker\n");
-
-    return SbWriteData(SBDevice, SbEnableSpeaker);
-}
-
-BOOLEAN
-DisableSpeaker(
-    PSOUND_BLASTER_PARAMETERS SBDevice)
-{
-    DPRINT("Disabling speaker\n");
-
-    return SbWriteData(SBDevice, SbDisableSpeaker);
-}
-
-BOOLEAN
-StartSoundOutput(
-    PSOUND_BLASTER_PARAMETERS SBDevice,
-    ULONG BitDepth,
-    ULONG Channels,
-    ULONG BlockSize)
-{
-    DPRINT("Initializing output with %d channels at %d bits/sample\n", Channels, BitDepth);
-
-    UCHAR command = 0xc6, mode = 0x00;
-
-    if ( ( Channels < 1 ) || ( Channels > 2 ) )
-        return FALSE;
-
-    if ( ( BitDepth != 8 ) && ( BitDepth != 16 ) )
-        return FALSE;
-
-    switch ( BitDepth )
-    {
-        case 8 :    command = 0xc6; break;
-        case 16 :   command = 0xb6; break;
-    };
-
-    switch ( Channels )
-    {
-        case 1 :    mode = 0x00; break;
-        case 2 :    mode = 0x20; break;
-    }
-#if 0
-    first_byte = (BitDepth == 16) ? 0xb6 : 0xc6;
-    second_byte = (Channels == 1) ? 0x20 : 0x00;
-#endif
-
-    if ( SBDevice->dsp_version < 0x0400 )
-    {
-        /* TODO: Additional programming required */
-    }
-
-    /* Send freq */
-    SbWriteData(SBDevice, command);
-    SbWriteData(SBDevice, mode);
-    SbWriteData(SBDevice, BlockSize % 256);
-    SbWriteData(SBDevice, BlockSize / 256);
-
-    DPRINT("Finished programming the DSP\n");
-
-    return TRUE;
-}

Removed: branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/interrupt.c
URL: http://svn.reactos.org/svn/reactos/branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/interrupt.c?rev=33691&view=auto
==============================================================================
--- branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/interrupt.c [iso-8859-1] (original)
+++ branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/interrupt.c (removed)
@@ -1,61 +1,0 @@
-/*
-*/
-
-#include <sndblst.h>
-
-BOOLEAN
-CheckIrq(
-    PDEVICE_OBJECT DeviceObject)
-{
-/*    PSOUND_BLASTER_PARAMETERS parameters = DeviceObject->DriverExtension;*/
-
-    /* TODO */
-
-    return TRUE;
-}
-
-BOOLEAN NTAPI
-ServiceSoundBlasterInterrupt(
-    IN  PKINTERRUPT Interrupt,
-    IN  PVOID Context)
-{
-    DPRINT("* Processing ISR *\n");
-    return FALSE;
-}
-
-NTSTATUS
-EnableIrq(
-    PDEVICE_OBJECT DeviceObject)
-{
-    PSOUND_BLASTER_PARAMETERS parameters = DeviceObject->DeviceExtension;
-    ULONG vector;
-    KIRQL irq_level;
-    KAFFINITY affinity;
-    NTSTATUS status = STATUS_SUCCESS;
-
-    vector = HalGetInterruptVector(Isa,
-                                   0,
-                                   parameters->irq,
-                                   parameters->irq,
-                                   &irq_level,
-                                   &affinity);
-
-    DPRINT("Vector is 0x%x\n", vector);
-
-    status = IoConnectInterrupt(&parameters->interrupt,
-                                ServiceSoundBlasterInterrupt,
-                                DeviceObject,
-                                (PKSPIN_LOCK) NULL,
-                                vector,
-                                irq_level,
-                                irq_level,
-                                Latched, /* Latched / LevelSensitive */
-                                FALSE,  /* shareable */
-                                affinity,
-                                FALSE);
-
-    if ( status == STATUS_INVALID_PARAMETER )
-        status = STATUS_DEVICE_CONFIGURATION_ERROR;
-
-    return status;
-}

Removed: branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/main.c
URL: http://svn.reactos.org/svn/reactos/branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/main.c?rev=33691&view=auto
==============================================================================
--- branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/main.c [iso-8859-1] (original)
+++ branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/main.c (removed)
@@ -1,491 +1,0 @@
-/*
-    ReactOS
-    Sound Blaster driver
-
-    Programmers:
-        Andrew Greenwood
-
-    Notes:
-        Compatible with NT4
-*/
-
-#define NDEBUG
-#include <sndblst.h>
-
-#define TAG(A, B, C, D) (IN ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
-
-/*
-    IRP DISPATCH ROUTINES
-*/
-
-NTSTATUS STDCALL
-CreateSoundBlaster(
-    PDEVICE_OBJECT DeviceObject,
-    PIRP Irp)
-{
-    PSOUND_BLASTER_PARAMETERS sb_device = DeviceObject->DeviceExtension;
-
-    DPRINT("CreateSoundBlaster() called - extension 0x%x\n", sb_device);
-
-    EnableSpeaker(sb_device);
-    /*SetOutputSampleRate(sb_device, 22*/
-
-    Irp->IoStatus.Status = STATUS_SUCCESS;
-    Irp->IoStatus.Information = 0;
-
-    IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS STDCALL
-CloseSoundBlaster(
-    PDEVICE_OBJECT DeviceObject,
-    PIRP Irp)
-{
-    //PSOUND_BLASTER_PARAMETERS sb_device = DeviceObject->DeviceExtension;
-
-    DPRINT("CloseSoundBlaster() called\n");
-
-    Irp->IoStatus.Status = STATUS_SUCCESS;
-    Irp->IoStatus.Information = 0;
-
-    IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS STDCALL
-CleanupSoundBlaster(
-    PDEVICE_OBJECT DeviceObject,
-    PIRP Irp)
-{
-    //PSOUND_BLASTER_PARAMETERS sb_device = DeviceObject->DeviceExtension;
-
-    DPRINT("CleanupSoundBlaster() called\n");
-
-    Irp->IoStatus.Status = STATUS_SUCCESS;
-    Irp->IoStatus.Information = 0;
-
-    IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS STDCALL
-ControlSoundBlaster(
-    PDEVICE_OBJECT DeviceObject,
-    PIRP Irp)
-{
-    PIO_STACK_LOCATION stack;
-    //PSOUND_BLASTER_PARAMETERS sb_device = DeviceObject->DeviceExtension;
-
-    DPRINT("ControlSoundBlaster() called\n");
-
-    stack = IoGetCurrentIrpStackLocation(Irp);
-
-    switch ( stack->Parameters.DeviceIoControl.IoControlCode)
-    {
-        /* TODO */
-    };
-
-    Irp->IoStatus.Status = STATUS_SUCCESS;
-    Irp->IoStatus.Information = 0;
-
-    IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS STDCALL
-WriteSoundBlaster(
-    PDEVICE_OBJECT DeviceObject,
-    PIRP Irp)
-{
-    //PSOUND_BLASTER_PARAMETERS sb_device = DeviceObject->DeviceExtension;
-
-    DPRINT("WriteSoundBlaster() called\n");
-
-    Irp->IoStatus.Status = STATUS_SUCCESS;
-    Irp->IoStatus.Information = 0;
-
-    IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
-    return STATUS_SUCCESS;
-}
-
-VOID STDCALL
-UnloadSoundBlaster(
-    PDRIVER_OBJECT DriverObject)
-{
-    DPRINT("Sound Blaster driver unload\n");
-}
-
-NTSTATUS STDCALL
-OpenSubkey(
-    PUNICODE_STRING RegistryPath,
-    PWSTR Subkey,
-    ACCESS_MASK DesiredAccess,
-    OUT HANDLE* DevicesKeyHandle)
-{
-    NTSTATUS status;
-    OBJECT_ATTRIBUTES attribs;
-    UNICODE_STRING subkey_name;
-    HANDLE key_handle;
-
-    /* TODO: Check for NULL ptr in DevicesKeyHandle */
-
-    InitializeObjectAttributes(&attribs,
-                               RegistryPath,
-                               OBJ_CASE_INSENSITIVE,
-                               NULL,
-                               (PSECURITY_DESCRIPTOR) NULL);
-
-    status = ZwOpenKey(&key_handle, KEY_READ, &attribs);
-
-    if ( ! NT_SUCCESS(status) )
-    {
-        DPRINT("Couldn't open subkey %wZ\n", Subkey);
-        return status;
-    }
-
-    RtlInitUnicodeString(&subkey_name, Subkey);
-
-    InitializeObjectAttributes(&attribs,
-                               &subkey_name,
-                               OBJ_CASE_INSENSITIVE,
-                               key_handle,
-                               (PSECURITY_DESCRIPTOR) NULL);
-
-    status = ZwOpenKey(*DevicesKeyHandle, DesiredAccess, &attribs);
-    ZwClose(key_handle);
-
-    return status;
-}
-
-
-PWSTR STDCALL
-AllocateRegistryPathInfo(
-    PUNICODE_STRING BasePath,
-    PUNICODE_STRING ParametersPath,
-    PKEY_BASIC_INFORMATION KeyInfo)
-{
-    PWSTR name;
-    PWSTR pos;
-
-    DPRINT("Allocating memory for path info\n");
-    name = ExAllocatePool(PagedPool,
-                          BasePath->Length + sizeof(WCHAR) +
-                          ParametersPath->Length + sizeof(WCHAR) +
-                          KeyInfo->NameLength + sizeof(UNICODE_NULL));
-
-    if ( ! name )
-        return NULL;
-
-    DPRINT("Copying info\n");
-    pos = name;
-
-    RtlCopyMemory((PVOID)Pos, (PVOID)BasePath->Buffer, BasePath->Length);
-    pos += BasePath->Length / sizeof(WCHAR);
-    pos[0] = '\\';
-    pos ++;
-
-    RtlCopyMemory((PVOID)Pos, (PVOID)ParametersPath->Buffer, ParametersPath->Length);
-    pos += ParametersPath->Length / sizeof(WCHAR);
-    pos[0] = '\\';
-    pos ++;
-
-    RtlCopyMemory((PVOID)Pos, (PVOID)ParametersPath->Buffer, ParametersPath->Length);
-    pos += KeyInfo->NameLength / sizeof(WCHAR);
-    pos[0] = UNICODE_NULL;
-
-    DPRINT("All OK\n");
-    return name;
-}
-
-#define FreeRegistryPathInfo(ptr) \
-    ExFreePool(ptr)
-
-
-#define TAG_REG_INFO TAG('I','g','e','R')
-#define TAG_REG_NAME TAG('N','g','e','R')
-
-NTSTATUS STDCALL
-EnumerateSubkey(
-    PUNICODE_STRING RegistryPath,
-    PWSTR Subkey,
-    PREGISTRY_CALLBACK_ROUTINE Callback,
-    PDRIVER_OBJECT DriverObject)
-{
-    NTSTATUS status;
-    UNICODE_STRING subkey_name;
-    HANDLE devices_key_handle;
-
-    ULONG key_index = 0;
-    ULONG result_length;
-
-    status = OpenSubkey(RegistryPath, Subkey, KEY_ENUMERATE_SUB_KEYS, &devices_key_handle);
-
-    if ( ! NT_SUCCESS(status) )
-        return status;
-
-    while ( TRUE )
-    {
-        KEY_BASIC_INFORMATION test_info;
-        PKEY_BASIC_INFORMATION info;
-        ULONG size;
-        PWSTR name;
-
-        status = ZwEnumerateKey(devices_key_handle,
-                                key_index,
-                                KeyBasicInformation,
-                                &test_info,
-                                sizeof(test_info),
-                                &result_length);
-
-        if ( status == STATUS_NO_MORE_ENTRIES )
-            break;
-
-        size = result_length + FIELD_OFFSET(KEY_BASIC_INFORMATION, Name[0]);
-
-        info = (PKEY_BASIC_INFORMATION) ExAllocatePoolWithTag(PagedPool, size, TAG_REG_INFO);
-
-        if ( ! info )
-        {
-            DPRINT("Out of memory\n");
-            status = STATUS_INSUFFICIENT_RESOURCES;
-            break;
-        }
-
-        status = ZwEnumerateKey(devices_key_handle,
-                                key_index,
-                                KeyBasicInformation,
-                                info,
-                                size,
-                                &result_length);
-
-        if ( ! NT_SUCCESS(status) )
-        {
-            DPRINT("Unable to enumerate keys\n");
-            ExFreePoolWithTag(info, TAG_REG_INFO);
-            status = STATUS_INTERNAL_ERROR;
-            break;
-        }
-
-        /* Is this ok? */
-        RtlInitUnicodeString(&subkey_name, Subkey);
-
-        name = AllocateRegistryPathInfo(RegistryPath, &subkey_name, info);
-
-        if ( ! name )
-        {
-            DPRINT("Out of memory\n");
-            ExFreePoolWithTag(info, TAG_REG_INFO);
-            status = STATUS_INSUFFICIENT_RESOURCES;
-            break;
-        }
-
-        ExFreePoolWithTag(info, TAG_REG_INFO);
-
-        /* Call the callback */
-        status = Callback(DriverObject, name);
-
-        FreeRegistryPathInfo(name);
-
-        if ( ! NT_SUCCESS(status) )
-        {
-            DPRINT("Callback FAILED\n");
-            break;
-        }
-
-        key_index ++;
-    }
-
-    ZwClose(devices_key_handle);
-
-    DPRINT("Found %d subkey entries\n", key_index);
-
-    if ( ( key_index == 0 ) && ( status == STATUS_NO_MORE_ENTRIES ) )
-        return STATUS_DEVICE_CONFIGURATION_ERROR;
-
-    if ( status == STATUS_NO_MORE_ENTRIES )
-        status = STATUS_SUCCESS;
-
-    return status;
-}
-
-#define EnumerateDeviceKeys(path, callback, driver_obj) \
-    EnumerateSubkey(path, L"Devices", callback, driver_obj)
-
-
-NTSTATUS
-CreateDeviceName(
-    PCWSTR PrePrefix,
-    PCWSTR Prefix,
-    UCHAR Index,
-    PUNICODE_STRING DeviceName)
-{
-    UNICODE_STRING number;
-    WCHAR number_buffer[5];
-    UNICODE_STRING unicode_pre_prefix;
-    UNICODE_STRING unicode_prefix;
-    ULONG size;
-
-    RtlInitUnicodeString(&unicode_pre_prefix, PrePrefix);
-    RtlInitUnicodeString(&unicode_prefix, Prefix);
-
-    size = unicode_pre_prefix.Length +
-           unicode_prefix.Length +
-           sizeof(number_buffer) +
-           sizeof(UNICODE_NULL);
-
-    DeviceName->Buffer = ExAllocatePool(PagedPool, size);
-    DeviceName->MaximumLength = (USHORT) size;
-
-    if ( ! DeviceName->Buffer )
-        return STATUS_INSUFFICIENT_RESOURCES;
-
-    RtlCopyUnicodeString(DeviceName, &unicode_pre_prefix);
-    RtlAppendUnicodeStringToString(DeviceName, &unicode_prefix);
-
-    if ( Index != 255 )
-    {
-        number.Buffer = number_buffer;
-        number.MaximumLength = sizeof(number_buffer);
-
-        RtlIntegerToUnicodeString((ULONG) Index, 10, &number);
-        RtlAppendUnicodeStringToString(DeviceName, &number);
-    }
-
-    DeviceName->Buffer[DeviceName->Length / sizeof(UNICODE_NULL)] = UNICODE_NULL;
-
-    return STATUS_SUCCESS;
-}
-
-NTSTATUS STDCALL
-InitializeSoundBlaster(
-    PDRIVER_OBJECT DriverObject,
-    PWSTR RegistryPath)
-{
-    NTSTATUS status;
-    PDEVICE_OBJECT device_object;
-    PSOUND_BLASTER_PARAMETERS parameters = NULL;
-    UNICODE_STRING device_name;
-    UNICODE_STRING dos_device_name;
-
-    UCHAR device_index = 0;
-
-    DPRINT("Initializing a Sound Blaster device\n");
-
-    /* Change these later */
-    status = CreateDeviceName(L"",
-                              L"\\Device\\WaveOut",
-                              device_index,
-                              &device_name);
-
-    if ( ! NT_SUCCESS(status) )
-        return status;
-
-    status = CreateDeviceName(L"\\DosDevices\\",
-                              L"\\Device\\WaveOut" + wcslen(L"\\Device\\"),
-                              device_index,
-                              &dos_device_name);
-
-    if ( ! NT_SUCCESS(status) )
-    {
-        /* TODO */
-        return status;
-    }
-
-    DPRINT("Device: %wZ\n", device_name);
-    DPRINT("Symlink: %wZ\n", dos_device_name);
-
-    /*
-        Create the device and DOS symlink
-    */
-
-    status = IoCreateDevice(DriverObject,
-                            sizeof(SOUND_BLASTER_PARAMETERS),
-                            &device_name,
-                            FILE_DEVICE_SOUND,
-                            0,
-                            FALSE,
-                            &device_object);
-
-    if ( ! NT_SUCCESS(status) )
-        return status;
-
-    DPRINT("Created a device extension at 0x%x\n", device_object->DeviceExtension);
-    parameters = device_object->DeviceExtension;
-
-    status = IoCreateSymbolicLink(&dos_device_name, &device_name);
-
-    ExFreePool(dos_device_name.Buffer);
-    ExFreePool(device_name.Buffer);
-
-    if ( ! NT_SUCCESS(status) )
-    {
-        IoDeleteDevice(device_object);
-        device_object = NULL;
-        return status;
-    }
-
-    /* IoRegisterShutdownNotification( */
-
-    /*
-        Settings
-    */
-
-    device_object->AlignmentRequirement = FILE_BYTE_ALIGNMENT;
-
-    parameters->driver = DriverObject;
-    parameters->registry_path = RegistryPath;
-    parameters->port = DEFAULT_PORT;
-    parameters->irq = DEFAULT_IRQ;
-    parameters->dma = DEFAULT_DMA;
-    parameters->buffer_size = DEFAULT_BUFFER_SIZE;
-
-    /* TODO: Load the settings from the registry */
-
-    DPRINT("Port %x IRQ %d DMA %d\n", parameters->port, parameters->irq, parameters->dma);
-
-    DPRINT("Resetting the sound card\n");
-
-    if ( ! ResetSoundBlaster(parameters) )
-    {
-        /* TODO */
-        return STATUS_UNSUCCESSFUL;
-    }
-
-    /*
-    DPRINT("What kind of SB card is this?\n");
-    GetSoundBlasterModel(parameters);
-    */
-
-    return STATUS_SUCCESS;
-}
-
-
-NTSTATUS STDCALL
-DriverEntry(
-    PDRIVER_OBJECT DriverObject,
-    PUNICODE_STRING RegistryPath)
-{
-    NTSTATUS status;
-
-    DPRINT("Sound Blaster driver 0.1 by Silver Blade\n");
-
-    DriverObject->Flags = 0;
-    DriverObject->MajorFunction[IRP_MJ_CREATE] = CreateSoundBlaster;
-    DriverObject->MajorFunction[IRP_MJ_CLOSE] = CloseSoundBlaster;
-    DriverObject->MajorFunction[IRP_MJ_CLEANUP] = CleanupSoundBlaster;
-    DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = ControlSoundBlaster;
-    DriverObject->MajorFunction[IRP_MJ_WRITE] = WriteSoundBlaster;
-    DriverObject->DriverUnload = UnloadSoundBlaster;
-
-    DPRINT("Beginning device key enumeration\n");
-
-    status = EnumerateDeviceKeys(RegistryPath, *InitializeSoundBlaster, DriverObject);
-
-    return status;
-}

Modified: branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sb16_nt4.def
URL: http://svn.reactos.org/svn/reactos/branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sb16_nt4.def?rev=33692&r1=33691&r2=33692&view=diff
==============================================================================
--- branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sb16_nt4.def [iso-8859-1] (original)
+++ branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sb16_nt4.def [iso-8859-1] Sun May 25 05:32:57 2008
@@ -1,5 +1,5 @@
 ;
-; Exports definition file for sb16_ks.sys
+; Exports definition file for NT4 Sound Blaster driver
 ;
 EXPORTS
 DriverEntry at 8

Modified: branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sb16_nt4.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sb16_nt4.rbuild?rev=33692&r1=33691&r2=33692&view=diff
==============================================================================
--- branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sb16_nt4.rbuild [iso-8859-1] (original)
+++ branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sb16_nt4.rbuild [iso-8859-1] Sun May 25 05:32:57 2008
@@ -6,7 +6,5 @@
 	<importlibrary definition="sb16_nt4.def" />
 	<library>ntoskrnl</library>
 	<library>hal</library>
-	<file>main.c</file>
-	<file>control.c</file>
-	<file>interrupt.c</file>
+	<file>test.c</file>
 </module>

Removed: branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sndblst.h
URL: http://svn.reactos.org/svn/reactos/branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sndblst.h?rev=33691&view=auto
==============================================================================
--- branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sndblst.h [iso-8859-1] (original)
+++ branches/silverblade-audio/drivers/multimedia/audio/sb16_nt4/sndblst.h (removed)
@@ -1,155 +1,0 @@
-#ifndef SNDBLST_H
-#define SNDBLST_H
-
-#include <debug.h>
-#include <ntddk.h>
-
-#define SB_WAVE_IN_DEVICE_NAME  L"\\Device\\SBWaveIn"
-#define SB_WAVE_OUT_DEVICE_NAME L"\\Device\\SBWaveOut"
-/* TODO: MIDI */
-#define SB_AUX_DEVICE_NAME      L"\\Device\\SBAux"
-#define SB_MIXER_DEVICE_NAME    L"\\Device\\SBMixer"
-
-#define DEFAULT_PORT        0x220
-#define DEFAULT_IRQ         5
-#define DEFAULT_DMA         1
-#define DEFAULT_BUFFER_SIZE 65535
-
-#define SB_TIMEOUT          1000000
-
-#define SB_DSP_READY        0xaa
-
-enum
-{
-    NotDetected,
-    SoundBlaster,
-    SoundBlasterPro,
-    SoundBlaster2,
-    SoundBlasterPro2,
-    SoundBlasterProMCV,
-    SoundBlaster16
-};
-
-enum
-{
-    SB_RESET_PORT           = 0x06,
-    SB_READ_DATA_PORT       = 0x0a,
-    SB_WRITE_DATA_PORT      = 0x0c,
-    SB_WRITE_STATUS_PORT    = 0x0c,
-    SB_READ_STATUS_PORT     = 0x0e
-};
-
-enum
-{
-    SbAutoInitDmaOutput     = 0x1c,
-    SbAutoInitDmaInput      = 0x2c,
-    SbSetOutputRate         = 0x41, /* DSP v4.xx */
-    SbSetInputRate          = 0x42, /* DSP v4.xx */
-    SbSetBlockSize          = 0x48, /* DSP v2.00 + */
-    SbPauseDac              = 0x80,
-    SbPauseDmaOutput        = 0xd0,
-    SbEnableSpeaker         = 0xd1,
-    SbDisableSpeaker        = 0xd3,
-    SbGetSpeakerStatus      = 0xd8, /* DSP v2.00 + */
-    SbGetDspVersion         = 0xe1
-};
-
-typedef struct _SOUND_BLASTER_PARAMETERS
-{
-    PDRIVER_OBJECT driver;
-    PWSTR registry_path;
-    PKINTERRUPT interrupt;
-    ULONG port;
-    ULONG irq;
-    ULONG dma;
-    ULONG buffer_size;
-    USHORT dsp_version;
-} SOUND_BLASTER_PARAMETERS, *PSOUND_BLASTER_PARAMETERS;
-
-
-typedef STDCALL NTSTATUS REGISTRY_CALLBACK_ROUTINE(PDRIVER_OBJECT DriverObject, PWSTR RegistryPath);
-typedef REGISTRY_CALLBACK_ROUTINE *PREGISTRY_CALLBACK_ROUTINE;
-
-
-/*
-    Port I/O
-*/
-
-#define SbWrite(sbdevice, subport, data) \
-    WRITE_PORT_UCHAR((PUCHAR) sbdevice->port + subport, data)
-
-#define SbRead(sbdevice, subport) \
-    READ_PORT_UCHAR((PUCHAR) sbdevice->port + subport)
-
-#define SbWriteReset(sbdevice, data) \
-    SbWrite(sbdevice, SB_RESET_PORT, data)
-
-#define SbWriteDataWithoutWait(sbdevice, data) \
-    SbWrite(sbdevice, SB_WRITE_DATA_PORT, data)
-
-#define SbReadDataWithoutWait(sbdevice) \
-    SbRead(sbdevice, SB_READ_DATA_PORT)
-
-
-#define SbGetWriteStatus(sbdevice) \
-    SbRead(sbdevice, SB_WRITE_STATUS_PORT)
-
-#define SbGetReadStatus(sbdevice) \
-    SbRead(sbdevice, SB_READ_STATUS_PORT)
-
-
-
-BOOLEAN
-WaitForReady(
-    PSOUND_BLASTER_PARAMETERS SBDevice,
-    UCHAR Port);
-
-#define WaitToWrite(sbdevice) \
-    WaitForReady(sbdevice, SB_WRITE_STATUS_PORT)
-
-#define WaitToRead(sbdevice) \
-    WaitForReady(sbdevice, SB_READ_STATUS_PORT)
-
-BOOLEAN
-ResetSoundBlaster(
-    PSOUND_BLASTER_PARAMETERS SBDevice);
-
-ULONG
-GetSoundBlasterModel(
-    PSOUND_BLASTER_PARAMETERS SBDevice);
-
-BOOLEAN
-IsSampleRateCompatible(
-    PSOUND_BLASTER_PARAMETERS SBDevice,
-    ULONG SampleRate);
-
-BOOLEAN
-SetOutputSampleRate(
-    PSOUND_BLASTER_PARAMETERS SBDevice,
-    ULONG SampleRate);
-
-BOOLEAN
-EnableSpeaker(
-    PSOUND_BLASTER_PARAMETERS SBDevice);
-
-BOOLEAN
-DisableSpeaker(
-    PSOUND_BLASTER_PARAMETERS SBDevice);
-
-BOOLEAN
-StartSoundOutput(
-    PSOUND_BLASTER_PARAMETERS SBDevice,
-    ULONG BitDepth,
-    ULONG Channels,
-    ULONG BlockSize);
-
-
-/*
-    interrupt.c
-*/
-
-NTSTATUS
-EnableIrq(
-    PDEVICE_OBJECT DeviceObject);
-
-#endif

Added: branches/silverblade-audio/include/ddk/ntddsnd.h
URL: http://svn.reactos.org/svn/reactos/branches/silverblade-audio/include/ddk/ntddsnd.h?rev=33692&view=auto
==============================================================================
--- branches/silverblade-audio/include/ddk/ntddsnd.h (added)
+++ branches/silverblade-audio/include/ddk/ntddsnd.h [iso-8859-1] Sun May 25 05:32:57 2008
@@ -1,0 +1,322 @@
+/*
+    ReactOS Sound System
+    NT4 Multimedia Audio Support (ntddsnd.h)
+
+    Author:
+        Andrew Greenwood (andrew.greenwood at silverblade.co.uk)
+
+    History:
+        24 May 2008 - Created
+
+    This file contains definitions and structures for Windows NT4 style
+    multimedia drivers. The NT4 DDK has these split across multiple header
+    files: NTDDSND.H, NTDDWAVE.H, NTDDMIDI.H, NTDDMIX.H and NTDDAUX.H
+
+    Should you have an unstoppable urge to build an NT4 multimedia driver
+    against these headers, just create the other files listed above and make
+    them #include this one.
+*/
+
+#ifndef NTDDWAVE
+#define NTDDWAVE
+
+#define SOUND_MAX_DEVICES           100
+
+
+/*
+    Base device names
+
+    Each device name should be given a numerical suffix identifying that
+    unique device, eg:
+
+    \Device\WaveOut0    - First wave output device
+    \Device\WaveOut1    - Second wave output device
+*/
+
+#define SOUND_MAX_DEVICE_NAME       80
+
+#define DD_WAVE_IN_DEVICE_NAME      "\\Device\\WaveIn"
+#define DD_WAVE_IN_DEVICE_NAME_U   L"\\Device\\WaveIn"
+
+#define DD_WAVE_OUT_DEVICE_NAME     "\\Device\\WaveOut"
+#define DD_WAVE_OUT_DEVICE_NAME_U  L"\\Device\\WaveOut"
+
+#define DD_MIDI_IN_DEVICE_NAME      "\\Device\\MidiIn"
+#define DD_MIDI_IN_DEVICE_NAME_U   L"\\Device\\MidiIn"
+
+#define DD_MIDI_OUT_DEVICE_NAME     "\\Device\\MidiOut"
+#define DD_MIDI_OUT_DEVICE_NAME_U  L"\\Device\\MidiOut"
+
+#define DD_MIX_DEVICE_NAME          "\\Device\\MMMix"
+#define DD_MIX_DEVICE_NAME_U       L"\\Device\\MMMix"
+
+#define DD_AUX_DEVICE_NAME          "\\Device\\MMAux"
+#define DD_AUX_DEVICE_NAME_U       L"\\Device\\MMAux"
+
+/*
+    Base control codes
+*/
+
+#define IOCTL_SOUND_BASE    FILE_DEVICE_SOUND
+#define IOCTL_WAVE_BASE     0x0000
+#define IOCTL_MIDI_BASE     0x0080
+#define IOCTL_AUX_BASE      0x0100
+#define IOCTL_MIX_BASE      0x0180
+
+
+/*
+    Helper macros for defining control codes
+*/
+
+#define WAVE_CTL_CODE(subcode, iomethod, access) \
+    CTL_CODE(FILE_DEVICE_SOUND, IOCTL_WAVE_BASE + subcode, iomethod, access)
+
+#define MIDI_CTL_CODE(subcode, iomethod, access) \
+    CTL_CODE(FILE_DEVICE_SOUND, IOCTL_MIDI_BASE + subcode, iomethod, access)
+
+#define MIX_CTL_CODE(subcode, iomethod, access) \
+    CTL_CODE(FILE_DEVICE_SOUND, IOCTL_MIX_BASE + subcode, iomethod, access)
+
+#define AUX_CTL_CODE(subcode, iomethod, access) \
+    CTL_CODE(FILE_DEVICE_SOUND, IOCTL_AUX_BASE + subcode, iomethod, access)
+
+
+/*
+    Wave device control codes
+*/
+
+#define IOCTL_WAVE_QUERY_FORMAT \
+    WAVE_CTL_CODE(0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_WAVE_SET_FORMAT \
+    WAVE_CTL_CODE(0x0002, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#define IOCTL_WAVE_GET_CAPABILITIES \
+    WAVE_CTL_CODE(0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_WAVE_SET_STATE \
+    WAVE_CTL_CODE(0x0004, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#define IOCTL_WAVE_GET_STATE \
+    WAVE_CTL_CODE(0x0005, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#define IOCTL_WAVE_GET_POSITION \
+    WAVE_CTL_CODE(0x0006, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#define IOCTL_WAVE_SET_VOLUME \
+    WAVE_CTL_CODE(0x0007, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_WAVE_GET_VOLUME \
+    WAVE_CTL_CODE(0x0008, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_WAVE_SET_PITCH \
+    WAVE_CTL_CODE(0x0009, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#define IOCTL_WAVE_GET_PITCH \
+    WAVE_CTL_CODE(0x000A, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#define IOCTL_WAVE_SET_PLAYBACK_RATE \
+    WAVE_CTL_CODE(0x000B, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#define IOCTL_WAVE_GET_PLAYBACK_RATE \
+    WAVE_CTL_CODE(0x000C, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#define IOCTL_WAVE_PLAY \
+    WAVE_CTL_CODE(0x000D, METHOD_IN_DIRECT, FILE_WRITE_ACCESS)
+
+#define IOCTL_WAVE_RECORD \
+    WAVE_CTL_CODE(0x000E, METHOD_OUT_DIRECT, FILE_WRITE_ACCESS)
+
+#define IOCTL_WAVE_BREAK_LOOP \
+    WAVE_CTL_CODE(0x000F, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#define IOCTL_WAVE_SET_LOW_PRIORITY \
+    WAVE_CTL_CODE(0x0010, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#if DBG
+    /* Debug-only control code */
+    #define IOCTL_WAVE_SET_DEBUG_LEVEL \
+        WAVE_CTL_CODE(0x0040, METHOD_BUFFERED, FILE_READ_ACCESS)
+#endif
+
+
+/*
+    MIDI device control codes
+*/
+
+#define IOCTL_MIDI_GET_CAPABILITIES \
+    MIDI_CTL_CODE(0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_MIDI_SET_STATE \
+    MIDI_CTL_CODE(0x0002, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#define IOCTL_MIDI_GET_STATE \
+    MIDI_CTL_CODE(0x0003, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#define IOCTL_MIDI_SET_VOLUME \
+    MIDI_CTL_CODE(0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_MIDI_GET_VOLUME \
+    MIDI_CTL_CODE(0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_MIDI_PLAY \
+    MIDI_CTL_CODE(0x0006, METHOD_NEITHER, FILE_WRITE_ACCESS)
+
+#define IOCTL_MIDI_RECORD \
+    MIDI_CTL_CODE(0x0007, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#define IOCTL_MIDI_CACHE_PATCHES \
+    MIDI_CTL_CODE(0x0008, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#define IOCTL_MIDI_CACHE_DRUM_PATCHES \
+    MIDI_CTL_CODE(0x0009, METHOD_BUFFERED, FILE_WRITE_ACCESS)
+
+#if DBG
+    /* Debug-only control code */
+    #define IOCTL_MIDI_SET_DEBUG_LEVEL \
+        WAVE_CTL_CODE(0x0040, METHOD_BUFFERED, FILE_READ_ACCESS)
+#endif
+
+
+/*
+    Mixer device control codes
+*/
+
+#define IOCTL_MIX_GET_CONFIGURATION \
+    MIX_CTL_CODE(0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_MIX_GET_CONTROL_DATA \
+    MIX_CTL_CODE(0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_MIX_GET_LINE_DATA \
+    MIX_CTL_CODE(0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_MIX_REQUEST_NOTIFY \
+    MIX_CTL_CODE(0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+
+/*
+    Auxiliary device control codes
+*/
+
+#define IOCTL_AUX_GET_CAPABILITIES \
+    AUX_CTL_CODE(0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_AUX_SET_VOLUME \
+    AUX_CTL_CODE(0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_AUX_GET_VOLUME \
+    AUX_CTL_CODE(0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+#define IOCTL_SOUND_GET_CHANGED_VOLUME \
+    AUX_CTL_CODE(0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
+
+
+/*
+    Wave structures & states
+*/
+
+#define WAVE_DD_MAX_VOLUME      0xFFFFFFFF
+
+typedef struct _WAVE_DD_VOLUME
+{
+    ULONG Left;
+    ULONG Right;
+} WAVE_DD_VOLUME, *PWAVE_DD_VOLUME;
+
+typedef struct _WAVE_DD_PITCH
+{
+    ULONG Pitch;
+} WAVE_DD_PITCH, *PWAVE_DD_PITCH;
+
+typedef struct _WAVE_DD_PLAYBACK_RATE
+{
+    ULONG Rate;
+} WAVE_DD_PLAYBACK_RATE, *PWAVE_DD_PLAYBACK_RATE;
+
+/* IOCTL_WAVE_SET_STATE commands */
+#define WAVE_DD_STOP        0x0001
+#define WAVE_DD_PLAY        0x0002
+#define WAVE_DD_RECORD      0x0003
+#define WAVE_DD_RESET       0x0004
+
+/* IOCTL_WAVE_GET_STATE responses */
+#define WAVE_DD_IDLE        0x0000
+#define WAVE_DD_STOPPED     0x0001
+#define WAVE_DD_PLAYING     0x0002
+#define WAVE_DD_RECORDING   0x0003
+
+
+/*
+    MIDI structures & states
+*/
+
+typedef struct _MIDI_DD_INPUT_DATA
+{
+    LARGE_INTEGER Time;
+    UCHAR Data[sizeof(ULONG)];
+} MIDI_DD_INPUT_DATA, *PMIDI_DD_INPUT_DATA;
+
+typedef struct _MIDI_DD_VOLUME
+{
+    ULONG Left;
+    ULONG Right;
+} MIDI_DD_VOLUME, *PMIDI_DD_VOLUME;
+
+typedef struct _MIDI_DD_CACHE_PATCHES
+{
+    ULONG Bank;
+    ULONG Flags;
+    ULONG Patches[128];
+} MIDI_DD_CACHE_PATCHES, *PMIDI_DD_CACHE_PATCHES;
+
+typedef struct _MIDI_DD_CACHE_DRUM_PATCHES
+{
+    ULONG Patch;
+    ULONG Flags;
+    ULONG DrumPatches[128];
+} MIDI_DD_CACHE_DRUM_PATCHES, *PMIDI_DD_CACHE_DRUM_PATCHES;
+
+/* IOCTL_MIDI_SET_STATE commands */
+#define MIDI_DD_STOP        0x0001
+#define MIDI_DD_PLAY        0x0002
+#define MIDI_DD_RECORD      0x0003
+#define MIDI_DD_RESET       0x0004
+
+/* IOCTL_MIDI_GET_STATE responses */
+#define MIDI_DD_IDLE        0x0000
+#define MIDI_DD_STOPPED     0x0001
+#define MIDI_DD_PLAYING     0x0002
+#define MIDI_DD_RECORDING   0x0003
+
+
+/*
+    Mixer structures
+    TODO: This is incomplete (see NTDDMIX.H in NT4 DDK)
+*/
+
+typedef struct _MIXER_DD_READ_DATA
+{
+    ULONG Id;
+} MIXER_DD_READ_DATA, *PMIXER_DD_READ_DATA;
+
+typedef struct _MIXER_DD_LINE_DATA
+{
+    ULONG fdwLine;
+} MIXER_DD_LINE_DATA, *PMIXER_DD_LINE_DATA;
+
+
+/*
+    Auxiliary structures
+*/
+
+#define AUX_DD_MAX_VOLUME   0xFFFFFFFF
+
+typedef struct _AUX_DD_VOLUME
+{
+    ULONG Left;
+    ULONG Right;
+} AUX_DD_VOLUME, *PAUX_DD_VOLUME;
+
+
+#endif

Propchange: branches/silverblade-audio/include/ddk/ntddsnd.h
------------------------------------------------------------------------------
    svn:eol-style = native



More information about the Ros-diffs mailing list