- Fix compilation of cmidriver

- Does not yet link

svn path=/trunk/; revision=39827
This commit is contained in:
Johannes Anderwald 2009-03-01 14:29:57 +00:00
parent 2eba686398
commit 4b4d95da9c
26 changed files with 272 additions and 484 deletions

View file

@ -1,22 +0,0 @@
For compiling and building the WDM driver, the following software is required:
- Microsoft Windows Driver Development Kit (http://www.microsoft.com/whdc/devtools/wdk/default.mspx)
- 7Zip (http://www.7-zip.org/)
- Sed (http://gnuwin32.sourceforge.net/packages/sed.htm)
The directories which contain 7z.exe, sed.exe and devcon.exe need to be in your %PATH% environment variable. Replace the file 'dsound.lib' in the [WINDDK]\[xxxx]\lib\w2k\i386 folder with the version from [WINDDK]\[xxxx]\lib\wxp\i386.
The source files should be unpacked to [WINDDK]\[xxxx]\src\[\wdm]\audio\cmedia
envars.bat - contains some environment variables: you probably want to change them
make.bat - creates a debug build for x86 systems
update.bat - replaces the currently installed driver with the x86 debug build
build-release-x64.bat - creates a non-WaveRT deployment build for x64 systems
build-release-x64-WaveRT.bat - creates a WaveRT deployment build for x64 systems
build-release-x86.bat - creates a non-WaveRT deployment build for x86 systems
build-release-x86-WaveRT.bat - creates a WaveRT deployment build for x86 systems
distclean.bat - cleans up and packs the source
build-all.bat - builds all versions and packs the source
For testing and debugging, DebugView (http://www.microsoft.com/technet/sysinternals/utilities/debugview.mspx) is very helpful.
If you have questions, feel free to mail me: dogber1@gmail.com

View file

@ -26,21 +26,31 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
#define PUT_GUIDS_HERE #define PUT_GUIDS_HERE
#include <initguid.h>
#include "adapter.hpp" #include "adapter.hpp"
#pragma code_seg("PAGE") //#pragma code_seg("PAGE")
NTSTATUS InstallSubdevice(PDEVICE_OBJECT DeviceObject, PIRP Irp, PWCHAR Name, REFGUID PortClassId, REFGUID MiniportClassId, PFNCREATEINSTANCE MiniportCreate, PUNKNOWN UnknownAdapter, PRESOURCELIST ResourceList, REFGUID PortInterfaceId, PUNKNOWN* OutPortUnknown) NTSTATUS InstallSubdevice(
PDEVICE_OBJECT DeviceObject,
PIRP Irp,
PWCHAR Name,
REFGUID PortClassId,
REFGUID MiniportClassId,
PFNCREATEINSTANCE MiniportCreate,
PUNKNOWN UnknownAdapter,
PRESOURCELIST ResourceList,
REFGUID PortInterfaceId,
PUNKNOWN* OutPortUnknown)
{ {
PAGED_CODE();
DBGPRINT(("InstallSubdevice()"));
NTSTATUS ntStatus; NTSTATUS ntStatus;
PPORT Port; PPORT Port;
PMINIPORT MiniPort; PMINIPORT MiniPort;
////PAGED_CODE();
DBGPRINT(("InstallSubdevice()"));
ntStatus = PcNewPort(&Port, PortClassId); ntStatus = PcNewPort(&Port, PortClassId);
if (NT_SUCCESS(ntStatus)) { if (NT_SUCCESS(ntStatus)) {
if (MiniportCreate) { if (MiniportCreate) {
@ -76,19 +86,24 @@ NTSTATUS InstallSubdevice(PDEVICE_OBJECT DeviceObject, PIRP Irp, PWCHAR Name, RE
} }
NTSTATUS ProcessResources(PRESOURCELIST ResourceList, PRESOURCELIST* UartResourceList) NTSTATUS
ProcessResources(
PRESOURCELIST ResourceList,
PRESOURCELIST* UartResourceList)
{ {
PAGED_CODE(); NTSTATUS ntStatus;
ASSERT(ResourceList);
ASSERT(UartResourceList); ////PAGED_CODE();
DBGPRINT(("ProcessResources()")); ////ASSERT(ResourceList);
DBGPRINT(("NumberOfPorts: %d, NumberOfInterrupts: %d, NumberOfDmas: %d", ResourceList->NumberOfPorts(), ResourceList->NumberOfInterrupts(), ResourceList->NumberOfDmas())); ////ASSERT(UartResourceList);
//DBGPRINT(("ProcessResources()"));
//DBGPRINT(("NumberOfPorts: %d, NumberOfInterrupts: %d, NumberOfDmas: %d", ResourceList->NumberOfPorts(), ResourceList->NumberOfInterrupts(), ResourceList->NumberOfDmas()));
#ifdef UART #ifdef UART
(*UartResourceList) = NULL; (*UartResourceList) = NULL;
#endif #endif
NTSTATUS ntStatus;
if ((ResourceList->NumberOfPorts() == 0) || (ResourceList->NumberOfPorts() > 2) || (ResourceList->NumberOfInterrupts() != 1) || (ResourceList->NumberOfDmas() != 0)) { if ((ResourceList->NumberOfPorts() == 0) || (ResourceList->NumberOfPorts() > 2) || (ResourceList->NumberOfInterrupts() != 1) || (ResourceList->NumberOfDmas() != 0)) {
DBGPRINT(("Unexpected configuration")); DBGPRINT(("Unexpected configuration"));
return STATUS_DEVICE_CONFIGURATION_ERROR; return STATUS_DEVICE_CONFIGURATION_ERROR;
@ -108,15 +123,16 @@ NTSTATUS ProcessResources(PRESOURCELIST ResourceList, PRESOURCELIST* UartResourc
NTSTATUS StartDevice(PDEVICE_OBJECT DeviceObject, PIRP Irp, PRESOURCELIST ResourceList) NTSTATUS StartDevice(PDEVICE_OBJECT DeviceObject, PIRP Irp, PRESOURCELIST ResourceList)
{ {
PAGED_CODE();
ASSERT(DeviceObject);
ASSERT(Irp);
ASSERT(ResourceList);
DBGPRINT(("StartDevice()"));
NTSTATUS ntStatus; NTSTATUS ntStatus;
PPORT pPort = 0; PPORT pPort = 0;
ULONG* MPUBase; ULONG* MPUBase;
#if 0
//PAGED_CODE();
//ASSERT(DeviceObject);
//ASSERT(Irp);
//ASSERT(ResourceList);
DBGPRINT(("StartDevice()"));
#endif
ntStatus = PcNewPort(&pPort,CLSID_PortWaveCyclic); ntStatus = PcNewPort(&pPort,CLSID_PortWaveCyclic);
if (NT_SUCCESS(ntStatus)) { if (NT_SUCCESS(ntStatus)) {
@ -248,22 +264,29 @@ NTSTATUS StartDevice(PDEVICE_OBJECT DeviceObject, PIRP Irp, PRESOURCELIST Resour
return ntStatus; return ntStatus;
} }
extern "C" NTSTATUS AddDevice(PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT PhysicalDeviceObject) extern
"C"
NTSTATUS
NTAPI
AddDevice(
PDRIVER_OBJECT DriverObject,
PDEVICE_OBJECT PhysicalDeviceObject)
{ {
PAGED_CODE(); #if 0
DBGPRINT(("AddDevice()")); //PAGED_CODE();
DBGPRINT(("AddDevice()"));
#endif
return PcAddAdapterDevice(DriverObject, PhysicalDeviceObject, (PCPFNSTARTDEVICE)StartDevice, MAX_MINIPORTS, 0); return PcAddAdapterDevice(DriverObject, PhysicalDeviceObject, (PCPFNSTARTDEVICE)StartDevice, MAX_MINIPORTS, 0);
} }
bool CopyResourceDescriptor(PIO_RESOURCE_DESCRIPTOR pInResDescriptor, PIO_RESOURCE_DESCRIPTOR pOutResDescriptor) bool CopyResourceDescriptor(PIO_RESOURCE_DESCRIPTOR pInResDescriptor, PIO_RESOURCE_DESCRIPTOR pOutResDescriptor)
{ {
PAGED_CODE();
ASSERT(pInResDescriptor);
ASSERT(pOutResDescriptor);
DBGPRINT(("CopyResourceDescriptor()"));
#if 0 #if 0
//PAGED_CODE();
//ASSERT(pInResDescriptor);
//ASSERT(pOutResDescriptor);
DBGPRINT(("CopyResourceDescriptor()"));
RtlCopyMemory(pOutResDescriptor, pInResDescriptor, sizeof(IO_RESOURCE_DESCRIPTOR)); RtlCopyMemory(pOutResDescriptor, pInResDescriptor, sizeof(IO_RESOURCE_DESCRIPTOR));
#else #else
pOutResDescriptor->Type = pInResDescriptor->Type; pOutResDescriptor->Type = pInResDescriptor->Type;
@ -283,14 +306,18 @@ bool CopyResourceDescriptor(PIO_RESOURCE_DESCRIPTOR pInResDescriptor, PIO_RESOUR
pOutResDescriptor->u.Port.MaximumAddress = pInResDescriptor->u.Port.MaximumAddress; pOutResDescriptor->u.Port.MaximumAddress = pInResDescriptor->u.Port.MaximumAddress;
pOutResDescriptor->u.Port.Length = pInResDescriptor->u.Port.Length; pOutResDescriptor->u.Port.Length = pInResDescriptor->u.Port.Length;
pOutResDescriptor->u.Port.Alignment = pInResDescriptor->u.Port.Alignment; pOutResDescriptor->u.Port.Alignment = pInResDescriptor->u.Port.Alignment;
#if 0
DBGPRINT((" Port: min %08x.%08x max %08x.%08x, Length: %x, Option: %x", pOutResDescriptor->u.Port.MinimumAddress.HighPart, pOutResDescriptor->u.Port.MinimumAddress.LowPart, DBGPRINT((" Port: min %08x.%08x max %08x.%08x, Length: %x, Option: %x", pOutResDescriptor->u.Port.MinimumAddress.HighPart, pOutResDescriptor->u.Port.MinimumAddress.LowPart,
pOutResDescriptor->u.Port.MaximumAddress.HighPart, pOutResDescriptor->u.Port.MaximumAddress.LowPart, pOutResDescriptor->u.Port.MaximumAddress.HighPart, pOutResDescriptor->u.Port.MaximumAddress.LowPart,
pOutResDescriptor->u.Port.Length, pOutResDescriptor->Option)); pOutResDescriptor->u.Port.Length, pOutResDescriptor->Option));
#endif
break; break;
case CmResourceTypeInterrupt: case CmResourceTypeInterrupt:
pOutResDescriptor->u.Interrupt.MinimumVector = pInResDescriptor->u.Interrupt.MinimumVector; pOutResDescriptor->u.Interrupt.MinimumVector = pInResDescriptor->u.Interrupt.MinimumVector;
pOutResDescriptor->u.Interrupt.MaximumVector = pInResDescriptor->u.Interrupt.MaximumVector; pOutResDescriptor->u.Interrupt.MaximumVector = pInResDescriptor->u.Interrupt.MaximumVector;
#if 0
DBGPRINT((" IRQ: min %x max %x, Option: %d", pOutResDescriptor->u.Interrupt.MinimumVector, pOutResDescriptor->u.Interrupt.MaximumVector, pOutResDescriptor->Option)); DBGPRINT((" IRQ: min %x max %x, Option: %d", pOutResDescriptor->u.Interrupt.MinimumVector, pOutResDescriptor->u.Interrupt.MaximumVector, pOutResDescriptor->Option));
#endif
break; break;
default: default:
return FALSE; return FALSE;
@ -299,19 +326,25 @@ bool CopyResourceDescriptor(PIO_RESOURCE_DESCRIPTOR pInResDescriptor, PIO_RESOUR
#endif #endif
} }
extern "C" NTSTATUS AdapterDispatchPnp(PDEVICE_OBJECT pDeviceObject, PIRP pIrp) extern
"C"
NTSTATUS
NTAPI
AdapterDispatchPnp(
PDEVICE_OBJECT pDeviceObject,
PIRP pIrp)
{ {
PAGED_CODE();
ASSERT(pDeviceObject);
ASSERT(pIrp);
DBGPRINT(("AdapterDispatchPnp()"));
NTSTATUS ntStatus = STATUS_SUCCESS; NTSTATUS ntStatus = STATUS_SUCCESS;
ULONG resourceListSize; ULONG resourceListSize;
PIO_RESOURCE_REQUIREMENTS_LIST resourceList, list; PIO_RESOURCE_REQUIREMENTS_LIST resourceList, list;
PIO_RESOURCE_DESCRIPTOR descriptor; PIO_RESOURCE_DESCRIPTOR descriptor;
PIO_STACK_LOCATION pIrpStack = IoGetCurrentIrpStackLocation(pIrp); PIO_STACK_LOCATION pIrpStack = IoGetCurrentIrpStackLocation(pIrp);
////PAGED_CODE();
////ASSERT(pDeviceObject);
////ASSERT(pIrp);
DBGPRINT(("AdapterDispatchPnp()"));
if (pIrpStack->MinorFunction == IRP_MN_FILTER_RESOURCE_REQUIREMENTS) { if (pIrpStack->MinorFunction == IRP_MN_FILTER_RESOURCE_REQUIREMENTS) {
DBGPRINT(("[AdapterDispatchPnp] - IRP_MN_FILTER_RESOURCE_REQUIREMENTS")); DBGPRINT(("[AdapterDispatchPnp] - IRP_MN_FILTER_RESOURCE_REQUIREMENTS"));
@ -373,7 +406,7 @@ extern "C" NTSTATUS AdapterDispatchPnp(PDEVICE_OBJECT pDeviceObject, PIRP pIrp)
descriptor->u.Port.Length = 1; descriptor->u.Port.Length = 1;
descriptor->u.Port.Alignment = 0x10; descriptor->u.Port.Alignment = 0x10;
DBGPRINT(("number of resource list descriptors: %d", resourceList->List[0].Count)); // DBGPRINT(("number of resource list descriptors: %d", resourceList->List[0].Count));
pIrp->IoStatus.Information = (ULONG_PTR)resourceList; pIrp->IoStatus.Information = (ULONG_PTR)resourceList;
@ -387,27 +420,35 @@ extern "C" NTSTATUS AdapterDispatchPnp(PDEVICE_OBJECT pDeviceObject, PIRP pIrp)
return ntStatus; return ntStatus;
} }
extern "C" NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPathName) extern
"C"
NTSTATUS
NTAPI
DriverEntry(
PDRIVER_OBJECT DriverObject,
PUNICODE_STRING RegistryPathName)
{ {
PAGED_CODE(); NTSTATUS ntStatus;
DBGPRINT(("DriverEntry()"));
DBGPRINT(("DriverEntry()"));
//bind the adapter driver to the portclass driver
ntStatus = PcInitializeAdapterDriver(DriverObject, RegistryPathName, AddDevice);
NTSTATUS ntStatus;
//bind the adapter driver to the portclass driver
ntStatus = PcInitializeAdapterDriver(DriverObject, RegistryPathName, AddDevice);
#ifdef UART #ifdef UART
if(NT_SUCCESS(ntStatus)) { if(NT_SUCCESS(ntStatus)) {
DriverObject->MajorFunction[IRP_MJ_PNP] = AdapterDispatchPnp; DriverObject->MajorFunction[IRP_MJ_PNP] = AdapterDispatchPnp;
} }
#endif #endif
#ifdef WAVERT #ifdef WAVERT
if (!IoIsWdmVersionAvailable(6,0)) { if (!IoIsWdmVersionAvailable(6,0)) {
ntStatus = STATUS_UNSUCCESSFUL; ntStatus = STATUS_UNSUCCESSFUL;
} }
#endif #endif
return ntStatus; return ntStatus;
} }
#pragma code_seg() #pragma code_seg()

View file

@ -1,6 +0,0 @@
@echo off
start /wait cmd.exe /c distclean.bat
start /wait cmd.exe /c build-release-x64.bat
start /wait cmd.exe /c build-release-x64-WaveRT.bat
start /wait cmd.exe /c build-release-x86.bat
start /wait cmd.exe /c build-release-x86-WaveRT.bat

View file

@ -1,32 +0,0 @@
@echo off
call envars.bat
call %CMI_DDKDIR%\bin\setenv %CMI_DDKDIR% fre AMD64
cd %CMI_BUILDDIR%
del CMIDriver-%CMI_VERSION%-bin-x64-WaveRT.zip
del installer\objfre_wlh_AMD64\AMD64\*.obj
del installer\objfre_wlh_AMD64\AMD64\*.exe
del cmicontrol\objfre_wlh_AMD64\AMD64\*.obj
del cmicontrol\objfre_wlh_AMD64\AMD64\*.exe
del cpl\objfre_wlh_AMD64\AMD64\*.obj
del cpl\objfre_wlh_AMD64\AMD64\*.exe
del objfre_wlh_AMD64\AMD64\*.obj
del objfre_wlh_AMD64\AMD64\*.sys
sed -i "s/CMIVERSION.*/CMIVERSION \"%CMI_VERSION%\"/" debug.hpp
sed -i "s/^\/\/#define WAVERT/#define WAVERT/" debug.hpp
nmake /x errors.err
mkdir release-x64-WaveRT
copy objfre_wlh_AMD64\AMD64\*.sys release-x64-WaveRT
sed -e "s/CMIVersion/%CMI_VERSION%/" -e "s/CMIReleaseDate/%CMI_RELEASEDATE%/" CM8738-x64-WaveRT.inf >release-x64-WaveRT\CM8738.inf
copy CHANGELOG.txt release-x64-WaveRT
cd cmicontrol
nmake /x errors.err
copy objfre_wlh_AMD64\AMD64\cmicontrol.exe ..\release-x64-WaveRT
cd ..\cpl
build -cZ
copy objfre_wlh_AMD64\AMD64\cmicpl.cpl ..\release-x64-WaveRT
cd ..\installer
build -cZ
copy objfre_wlh_AMD64\AMD64\setup.exe ..\release-x64-WaveRT
cd ..\release-x64-WaveRT
7z a -tzip ..\CMIDriver-%CMI_VERSION%-bin-x64-WaveRT.zip *
cd ..

View file

@ -1,32 +0,0 @@
@echo off
call envars.bat
call %CMI_DDKDIR%\bin\setenv %CMI_DDKDIR% fre AMD64
cd %CMI_BUILDDIR%
del CMIDriver-%CMI_VERSION%-bin-x64.zip
del installer\objfre_wlh_AMD64\AMD64\*.obj
del installer\objfre_wlh_AMD64\AMD64\*.exe
del cmicontrol\objfre_wlh_AMD64\AMD64\*.obj
del cmicontrol\objfre_wlh_AMD64\AMD64\*.exe
del cpl\objfre_wlh_AMD64\AMD64\*.obj
del cpl\objfre_wlh_AMD64\AMD64\*.exe
del objfre_wlh_AMD64\AMD64\*.obj
del objfre_wlh_AMD64\AMD64\*.sys
sed -i "s/CMIVERSION.*/CMIVERSION \"%CMI_VERSION%\"/" debug.hpp
sed -i "s/^#define WAVERT/\/\/#define WAVERT/" debug.hpp
nmake /x errors.err
mkdir release-x64
copy objfre_wlh_AMD64\AMD64\*.sys release-x64
sed -e "s/CMIVersion/%CMI_VERSION%/" -e "s/CMIReleaseDate/%CMI_RELEASEDATE%/" CM8738-x64.inf >release-x64\CM8738.inf
copy CHANGELOG.txt release-x64
cd cmicontrol
nmake /x errors.err
copy objfre_wlh_AMD64\AMD64\cmicontrol.exe ..\release-x64
cd ..\cpl
build -cZ
copy objfre_wlh_AMD64\AMD64\cmicpl.cpl ..\release-x64
cd ..\installer
build -cZ
copy objfre_wlh_AMD64\AMD64\setup.exe ..\release-x64
cd ..\release-x64
7z a -tzip ..\CMIDriver-%CMI_VERSION%-bin-x64.zip *
cd ..

View file

@ -1,32 +0,0 @@
@echo off
call envars.bat
call %CMI_DDKDIR%\bin\setenv %CMI_DDKDIR% fre x86
cd %CMI_BUILDDIR%
del CMIDriver-%CMI_VERSION%-bin-x86-WaveRT.zip
del installer\objfre_wlh_x86\i386\*.obj
del installer\objfre_wlh_x86\i386\*.exe
del cmicontrol\objfre_wlh_x86\i386\*.obj
del cmicontrol\objfre_wlh_x86\i386\*.exe
del cpl\objfre_wlh_x86\i386\*.obj
del cpl\objfre_wlh_x86\i386\*.exe
del objfre_wlh_x86\i386\*.obj
del objfre_wlh_x86\i386\*.sys
sed -i "s/CMIVERSION.*/CMIVERSION \"%CMI_VERSION%\"/" debug.hpp
sed -i "s/^\/\/#define WAVERT/#define WAVERT/" debug.hpp
nmake /x errors.err
mkdir release-x86-WaveRT
copy objfre_wlh_x86\i386\*.sys release-x86-WaveRT
sed -e "s/CMIVersion/%CMI_VERSION%/" -e "s/CMIReleaseDate/%CMI_RELEASEDATE%/" CM8738-x32-WaveRT.inf >release-x86-WaveRT\CM8738.inf
copy CHANGELOG.txt release-x86-WaveRT
cd cmicontrol
nmake /x errors.err
copy objfre_wlh_x86\i386\cmicontrol.exe ..\release-x86-WaveRT
cd ..\cpl
build -cZ
copy objfre_wlh_x86\i386\cmicpl.cpl ..\release-x86-WaveRT
cd ..\installer
build -cZ
copy objfre_wlh_x86\i386\setup.exe ..\release-x86-WaveRT
cd ..\release-x86-WaveRT
7z a -tzip ..\CMIDriver-%CMI_VERSION%-bin-x86-WaveRT.zip *
cd ..

View file

@ -1,32 +0,0 @@
@echo off
call envars.bat
call %CMI_DDKDIR%\bin\setenv %CMI_DDKDIR% fre x86 wxp
cd %CMI_BUILDDIR%
del CMIDriver-%CMI_VERSION%-bin-x86.zip
del installer\objfre_wxp_x86\i386\*.obj
del installer\objfre_wxp_x86\i386\*.exe
del cmicontrol\objfre_wxp_x86\i386\*.obj
del cmicontrol\objfre_wxp_x86\i386\*.exe
del cpl\objfre_wxp_x86\i386\*.obj
del cpl\objfre_wxp_x86\i386\*.exe
del objfre_wxp_x86\i386\*.obj
del objfre_wxp_x86\i386\*.sys
sed -i "s/CMIVERSION.*/CMIVERSION \"%CMI_VERSION%\"/" debug.hpp
sed -i "s/^#define WAVERT/\/\/#define WAVERT/" debug.hpp
nmake /x errors.err
mkdir release-x86
copy objfre_wxp_x86\i386\*.sys release-x86
sed -e "s/CMIVersion/%CMI_VERSION%/" -e "s/CMIReleaseDate/%CMI_RELEASEDATE%/" CM8738-x32.inf >release-x86\CM8738.inf
copy CHANGELOG.txt release-x86
cd cmicontrol
nmake /x errors.err
copy objfre_wxp_x86\i386\cmicontrol.exe ..\release-x86
cd ..\cpl
build -cZ
copy objfre_wxp_x86\i386\cmicpl.cpl ..\release-x86
cd ..\installer
build -cZ
copy objfre_wxp_x86\i386\setup.exe ..\release-x86
cd ..\release-x86
7z a -tzip ..\CMIDriver-%CMI_VERSION%-bin-x86.zip *
cd ..

View file

@ -0,0 +1,14 @@
<?xml version="1.0"?>
<!DOCTYPE module SYSTEM "../../../../../tools/rbuild/project.dtd">
<module name="cmidriver" type="kernelmodedriver" installbase="system32/drivers" installname="cmipci.sys" allowwarnings="true">
<include base="mpu401">.</include>
<library>ntoskrnl</library>
<library>portcls</library>
<library>hal</library>
<library>ks</library>
<file>adapter.cpp</file>
<file>common.cpp</file>
<file>mintopo.cpp</file>
<file>minwave.cpp</file>
<file>cmipci.rc</file>
</module>

View file

@ -170,4 +170,4 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define SBREG_EXTENSION 0xF0 // Soundblaster Extension Register (8bit) #define SBREG_EXTENSION 0xF0 // Soundblaster Extension Register (8bit)
#define EN_MICBOOST 0x01 // enable microphone boost for recording #define EN_MICBOOST 0x01 // enable microphone boost for recording
#endif #endif

View file

@ -29,22 +29,31 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#pragma code_seg("PAGE") #pragma code_seg("PAGE")
NTSTATUS NewCMIAdapter(PUNKNOWN *Unknown, REFCLSID, PUNKNOWN UnknownOuter, POOL_TYPE PoolType) NTSTATUS
NewCMIAdapter(
PUNKNOWN *Unknown,
REFCLSID,
PUNKNOWN UnknownOuter,
POOL_TYPE PoolType)
{ {
PAGED_CODE(); #if 0
//PAGED_CODE();
DBGPRINT(("NewCMIAdapter()")); DBGPRINT(("NewCMIAdapter()"));
ASSERT (Unknown); //ASSERT (Unknown);
#endif
STD_CREATE_BODY_(CCMIAdapter, Unknown, UnknownOuter, PoolType, PCMIADAPTER); STD_CREATE_BODY_(CCMIAdapter, Unknown, UnknownOuter, PoolType, PCMIADAPTER);
} }
STDMETHODIMP_(NTSTATUS) CCMIAdapter::init(PRESOURCELIST ResourceList, PDEVICE_OBJECT aDeviceObject) STDMETHODIMP_(NTSTATUS) CCMIAdapter::init(PRESOURCELIST ResourceList, PDEVICE_OBJECT aDeviceObject)
{ {
PAGED_CODE(); #if 0
ASSERT(ResourceList); //PAGED_CODE();
ASSERT(aDeviceObject); //ASSERT(ResourceList);
ASSERT(ResourceList->FindTranslatedPort(0)); //ASSERT(aDeviceObject);
//ASSERT(ResourceList->FindTranslatedPort(0));
DBGPRINT(("CCMIAdapter[%p]::init()", this)); DBGPRINT(("CCMIAdapter[%p]::init()", this));
#endif
NTSTATUS ntStatus = STATUS_SUCCESS; NTSTATUS ntStatus = STATUS_SUCCESS;
@ -110,7 +119,7 @@ STDMETHODIMP_(NTSTATUS) CCMIAdapter::init(PRESOURCELIST ResourceList, PDEVICE_OB
CCMIAdapter::~CCMIAdapter() CCMIAdapter::~CCMIAdapter()
{ {
PAGED_CODE (); //PAGED_CODE ();
DBGPRINT(("CCMIAdapter[%p]::~CCMIAdapter()", this)); DBGPRINT(("CCMIAdapter[%p]::~CCMIAdapter()", this));
if (InterruptSync) { if (InterruptSync) {
@ -122,11 +131,11 @@ CCMIAdapter::~CCMIAdapter()
STDMETHODIMP_(NTSTATUS) CCMIAdapter::NonDelegatingQueryInterface(REFIID Interface, PVOID* Object) STDMETHODIMP_(NTSTATUS) CCMIAdapter::NonDelegatingQueryInterface(REFIID Interface, PVOID* Object)
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CCMIAdapter[%p]::NonDelegatingQueryInterface()", this)); DBGPRINT(("CCMIAdapter[%p]::NonDelegatingQueryInterface()", this));
ASSERT(Object); //ASSERT(Object);
// Is it IID_IUnknown? // Is it IID_IUnknown?
if (IsEqualGUIDAligned (Interface, IID_IUnknown)) { if (IsEqualGUIDAligned (Interface, IID_IUnknown)) {
@ -155,7 +164,7 @@ STDMETHODIMP_(NTSTATUS) CCMIAdapter::NonDelegatingQueryInterface(REFIID Interfac
bool CCMIAdapter::queryChip() bool CCMIAdapter::queryChip()
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CCMIAdapter[%p]::queryChip()", this)); DBGPRINT(("CCMIAdapter[%p]::queryChip()", this));
UInt32 version = readUInt32(REG_INTHLDCLR) & VERSION_MASK; UInt32 version = readUInt32(REG_INTHLDCLR) & VERSION_MASK;
@ -216,7 +225,7 @@ bool CCMIAdapter::queryChip()
void CCMIAdapter::resetMixer() void CCMIAdapter::resetMixer()
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CCMIAdapter[%p]::resetMixer()", this)); DBGPRINT(("CCMIAdapter[%p]::resetMixer()", this));
writeMixer(0, 0); writeMixer(0, 0);
@ -225,8 +234,10 @@ void CCMIAdapter::resetMixer()
void CCMIAdapter::resetController() void CCMIAdapter::resetController()
{ {
PAGED_CODE(); #if 0
//PAGED_CODE();
DBGPRINT(("CCMIAdapter[%p]::resetController()", this)); DBGPRINT(("CCMIAdapter[%p]::resetController()", this));
#endif
writeUInt32(REG_INTHLDCLR, 0); writeUInt32(REG_INTHLDCLR, 0);
@ -258,10 +269,11 @@ void CCMIAdapter::resetController()
STDMETHODIMP_(NTSTATUS) CCMIAdapter::activateMPU(ULONG* MPUBase) STDMETHODIMP_(NTSTATUS) CCMIAdapter::activateMPU(ULONG* MPUBase)
{ {
PAGED_CODE();
DBGPRINT(("CCMIAdapter[%p]::activateMPU(%X)", this, MPUBase));
UInt32 LegacyCtrl; UInt32 LegacyCtrl;
#if 0
//PAGED_CODE();
DBGPRINT(("CCMIAdapter[%p]::activateMPU(%X)", this, MPUBase));
#endif
switch ((LONGLONG)MPUBase) { switch ((LONGLONG)MPUBase) {
case 0x300: LegacyCtrl = UART_300; break; case 0x300: LegacyCtrl = UART_300; break;
@ -284,8 +296,10 @@ STDMETHODIMP_(NTSTATUS) CCMIAdapter::activateMPU(ULONG* MPUBase)
// XP's order of power states when going to hibernate: D3 -> D0, waking up: D0 -> D3. // XP's order of power states when going to hibernate: D3 -> D0, waking up: D0 -> D3.
STDMETHODIMP_(void) CCMIAdapter::PowerChangeState(POWER_STATE NewState) STDMETHODIMP_(void) CCMIAdapter::PowerChangeState(POWER_STATE NewState)
{ {
PAGED_CODE(); #if 0
//PAGED_CODE();
DBGPRINT(("CCMIAdapter[%p]::PowerChangeState(%p)", this, NewState)); DBGPRINT(("CCMIAdapter[%p]::PowerChangeState(%p)", this, NewState));
#endif
if (NewState.DeviceState == CurrentPowerState ) { if (NewState.DeviceState == CurrentPowerState ) {
return; return;
@ -318,25 +332,31 @@ STDMETHODIMP_(void) CCMIAdapter::PowerChangeState(POWER_STATE NewState)
STDMETHODIMP_(NTSTATUS) CCMIAdapter::QueryPowerChangeState(POWER_STATE NewStateQuery) STDMETHODIMP_(NTSTATUS) CCMIAdapter::QueryPowerChangeState(POWER_STATE NewStateQuery)
{ {
PAGED_CODE(); #if 0
//PAGED_CODE();
DBGPRINT(("CCMIAdapter[%p]::QueryPowerChangeState(%p)", this, NewStateQuery)); DBGPRINT(("CCMIAdapter[%p]::QueryPowerChangeState(%p)", this, NewStateQuery));
#endif
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
STDMETHODIMP_(NTSTATUS) CCMIAdapter::QueryDeviceCapabilities(PDEVICE_CAPABILITIES PowerDeviceCaps) STDMETHODIMP_(NTSTATUS) CCMIAdapter::QueryDeviceCapabilities(PDEVICE_CAPABILITIES PowerDeviceCaps)
{ {
PAGED_CODE(); #if 0
//PAGED_CODE();
DBGPRINT(("CCMIAdapter[%p]::QueryDeviceCapabilities(%p)", this, PowerDeviceCaps)); DBGPRINT(("CCMIAdapter[%p]::QueryDeviceCapabilities(%p)", this, PowerDeviceCaps));
#endif
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
STDMETHODIMP_(NTSTATUS) CCMIAdapter::loadSBMixerFromMemory() STDMETHODIMP_(NTSTATUS) CCMIAdapter::loadSBMixerFromMemory()
{ {
PAGED_CODE();
DBGPRINT(("CCMIAdapter[%p]::loadSBMixerFromMemory()", this));
UInt8 sbIndex[] = { 0x04, 0x0A, 0x22, 0x28, 0x2E, 0x30, 0x31, 0x32, 0x33, 0x36, 0x37, 0x38, UInt8 sbIndex[] = { 0x04, 0x0A, 0x22, 0x28, 0x2E, 0x30, 0x31, 0x32, 0x33, 0x36, 0x37, 0x38,
0x39, 0x3A, 0x3C, 0x3D, 0x3E, 0xF0 }; 0x39, 0x3A, 0x3C, 0x3D, 0x3E, 0xF0 };
#if 0
//PAGED_CODE();
DBGPRINT(("CCMIAdapter[%p]::loadSBMixerFromMemory()", this));
#endif
for (int i = 0; i<(sizeof(sbIndex)/sizeof(sbIndex[0]));i++) { for (int i = 0; i<(sizeof(sbIndex)/sizeof(sbIndex[0]));i++) {
writeUInt8(REG_SBINDEX, sbIndex[i]); writeUInt8(REG_SBINDEX, sbIndex[i]);
writeUInt8(REG_SBDATA, mixerCache[i]); writeUInt8(REG_SBDATA, mixerCache[i]);
@ -431,13 +451,15 @@ STDMETHODIMP_(void) CCMIAdapter::clearMixerBit(UInt8 index, UInt8 flag)
NTSTATUS CCMIAdapter::InterruptServiceRoutine(PINTERRUPTSYNC InterruptSync, PVOID DynamicContext) NTSTATUS CCMIAdapter::InterruptServiceRoutine(PINTERRUPTSYNC InterruptSync, PVOID DynamicContext)
{ {
ASSERT(InterruptSync);
ASSERT(DynamicContext);
UInt32 status, mask = 0; UInt32 status, mask = 0;
CCMIAdapter *CMIAdapter = (CCMIAdapter *)DynamicContext; CCMIAdapter *CMIAdapter = (CCMIAdapter *)DynamicContext;
#if 0
//ASSERT(InterruptSync);
//ASSERT(DynamicContext);
#endif
if (!(CMIAdapter->cm.WaveMiniport)) { if (!(CMIAdapter->cm.WaveMiniport)) {
return STATUS_UNSUCCESSFUL; return STATUS_UNSUCCESSFUL;
} }

View file

@ -28,11 +28,13 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef _COMMON_HPP_ #ifndef _COMMON_HPP_
#define _COMMON_HPP_ #define _COMMON_HPP_
#include "ntddk.h"
#include "stdunk.h" #include "stdunk.h"
#include "portcls.h" #include "portcls.h"
#include "dmusicks.h" #include "dmusicks.h"
#include "ksdebug.h" #include "ksdebug.h"
#include "kcom.h" #include "kcom.h"
#include "ksmedia.h"
#include "interfaces.hpp" #include "interfaces.hpp"
#include "debug.hpp" #include "debug.hpp"

View file

@ -1,53 +0,0 @@
@echo off
call envars.bat
rd /s /q cpl\objchk_wxp_x86
rd /s /q cpl\objchk_wxp_amd64
rd /s /q cpl\objfre_wxp_x86
rd /s /q cpl\objfre_wxp_amd64
rd /s /q cpl\objchk_wlh_x86
rd /s /q cpl\objchk_wlh_amd64
rd /s /q cpl\objfre_wlh_x86
rd /s /q cpl\objfre_wlh_amd64
del cpl\errors.err
del cpl\build*.*
rd /s /q cmicontrol\objchk_wxp_x86
rd /s /q cmicontrol\objchk_wxp_amd64
rd /s /q cmicontrol\objfre_wxp_x86
rd /s /q cmicontrol\objfre_wxp_amd64
rd /s /q cmicontrol\objchk_wlh_x86
rd /s /q cmicontrol\objchk_wlh_amd64
rd /s /q cmicontrol\objfre_wlh_x86
rd /s /q cmicontrol\objfre_wlh_amd64
del cmicontrol\errors.err
del cmicontrol\build*.*
rd /s /q installer\objchk_wxp_x86
rd /s /q installer\objchk_wxp_amd64
rd /s /q installer\objfre_wxp_x86
rd /s /q installer\objfre_wxp_amd64
rd /s /q installer\objchk_wlh_x86
rd /s /q installer\objchk_wlh_amd64
rd /s /q installer\objfre_wlh_x86
rd /s /q installer\objfre_wlh_amd64
del installer\errors.err
del installer\build*.*
rd /s /q objchk_wxp_x86
rd /s /q objchk_wxp_amd64
rd /s /q objfre_wxp_x86
rd /s /q objfre_wxp_amd64
rd /s /q objchk_wlh_x86
rd /s /q objchk_wlh_amd64
rd /s /q objfre_wlh_x86
rd /s /q objfre_wlh_amd64
del errors.err
rd /s /q release-x86
rd /s /q release-x64
rd /s /q release-x86-WaveRT
rd /s /q release-x64-WaveRT
rd /s /q debug-x86
del *.zip
7z a -tzip CMIDriver-%CMI_VERSION%-src.zip * cmicontrol\* cpl\* installer\*

View file

@ -1,14 +0,0 @@
@echo off
set CMI_DDKDIR=c:\WinDDK\6000
set CMI_BUILDDIR=C:\WinDDK\6000\src\Audio\CMedia
set CMI_VERSION=1.1.3
REM the slashes need to be escaped for sed.exe
set CMI_RELEASEDATE=06\/30\/2007
REM wxp | wlh
set CMI_DEBUGOS=wlh
REM x86 | AMD64
set CMI_DEBUGARCH=x86
REM WaveRT |
set CMI_DEBUGVER=
REM find out with 'devcon dp_enum'
set CMI_OEMINF="oem1.inf"

View file

@ -28,8 +28,10 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef _INTERFACES_HPP_ #ifndef _INTERFACES_HPP_
#define _INTERFACES_HPP_ #define _INTERFACES_HPP_
#include <ntddk.h>
#include <portcls.h> #include <portcls.h>
#include <stdunk.h> #include <stdunk.h>
#include <debug.h>
#define MAXLEN_DMA_BUFFER 0x18000 #define MAXLEN_DMA_BUFFER 0x18000
#define MAX_OUTPUT_STREAMS 1 #define MAX_OUTPUT_STREAMS 1
@ -460,4 +462,4 @@ enum
KSNODE_WAVE_INVALID KSNODE_WAVE_INVALID
}; };
#endif //_INTERFACES_HPP_ #endif //_INTERFACES_HPP_

View file

@ -1,40 +0,0 @@
@echo off
call envars.bat
if "%DDKBUILDENV%"=="chk" goto :AlreadyDefined
call %CMI_DDKDIR%\bin\setenv %CMI_DDKDIR% chk %CMI_DEBUGARCH% %CMI_DEBUGOS%
:AlreadyDefined
cd %CMI_BUILDDIR%
if "%CMI_DEBUGARCH%"=="AMD64" goto :x64
set CMI_DEBUGDIR=objchk_%CMI_DEBUGOS%_%CMI_DEBUGARCH%\i386
mkdir %CMI_DEBUGDIR%
sed -e "s/CMIVersion/%CMI_VERSION%-dbg/" -e "s/CMIReleaseDate/%CMI_RELEASEDATE%/" CM8738-x32%WAVERTSTR%.INF >%CMI_DEBUGDIR%\CM8738.inf
goto start
:x64
set CMI_DEBUGDIR=objchk_%CMI_DEBUGOS%_%CMI_DEBUGARCH%\AMD64
mkdir %CMI_DEBUGDIR%
sed -e "s/CMIVersion/%CMI_VERSION%-dbg/" -e "s/CMIReleaseDate/%CMI_RELEASEDATE%/" CM8738-x64%WAVERTSTR%.inf >%CMI_DEBUGDIR%\CM8738.inf
:start
del %CMI_DEBUGDIR%\*.obj
sed -i "s/CMIVERSION.*/CMIVERSION \"%CMI_VERSION%-debug\"/" debug.hpp
if "%CMI_DEBUGVER%"=="WaveRT" goto :WaveRT
sed -i "s/^#define WAVERT/\/\/#define WAVERT/" debug.hpp
goto next
:WaveRT
sed -i "s/^\/\/#define WAVERT/#define WAVERT/" debug.hpp
:next
nmake /x errors.err
if "%CMI_DEBUGVER%"=="WaveRT" goto :WaveRT2
set WAVERTSTR=""
goto end
:WaveRT2
set WAVERTSTR="-WAVERT"
:end
sed -i "s/^cmicpl.*$//g" %CMI_DEBUGDIR%\CM8738.inf
sed -i "s/^CMICONTROL.*$//g" %CMI_DEBUGDIR%\CM8738.inf

View file

@ -1,6 +0,0 @@
!if defined(DDK_TARGET_OS) && "$(DDK_TARGET_OS)"!="Win2K"
!INCLUDE $(NTMAKEENV)\makefile.def
!else
!message This project is for Windows XP (or later) only.
!endif

View file

@ -35,18 +35,18 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
NTSTATUS CreateMiniportTopologyCMI(PUNKNOWN* Unknown, REFCLSID, PUNKNOWN UnknownOuter, POOL_TYPE PoolType) NTSTATUS CreateMiniportTopologyCMI(PUNKNOWN* Unknown, REFCLSID, PUNKNOWN UnknownOuter, POOL_TYPE PoolType)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(Unknown); //ASSERT(Unknown);
STD_CREATE_BODY_(CCMITopology,Unknown,UnknownOuter,PoolType,PMINIPORTTOPOLOGY); STD_CREATE_BODY_(CCMITopology,Unknown,UnknownOuter,PoolType,PMINIPORTTOPOLOGY);
} }
STDMETHODIMP CCMITopology::NonDelegatingQueryInterface(REFIID Interface, PVOID* Object) STDMETHODIMP CCMITopology::NonDelegatingQueryInterface(REFIID Interface, PVOID* Object)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(Object); //ASSERT(Object);
DBGPRINT(("CCMITopology::NonDelegatingQueryInterface")); DBGPRINT(("CCMITopology::NonDelegatingQueryInterface"));
if (IsEqualGUIDAligned(Interface,IID_IUnknown)) { if (IsEqualGUIDAligned(Interface, IID_IUnknown)) {
*Object = PVOID(PUNKNOWN(PMINIPORTTOPOLOGY(this))); *Object = PVOID(PUNKNOWN(PMINIPORTTOPOLOGY(this)));
} else if (IsEqualGUIDAligned(Interface,IID_IMiniport)) { } else if (IsEqualGUIDAligned(Interface,IID_IMiniport)) {
*Object = PVOID(PMINIPORT(this)); *Object = PVOID(PMINIPORT(this));
@ -68,7 +68,7 @@ STDMETHODIMP CCMITopology::NonDelegatingQueryInterface(REFIID Interface, PVOID*
CCMITopology::~CCMITopology() CCMITopology::~CCMITopology()
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CCMITopology::~CCMITopology")); DBGPRINT(("CCMITopology::~CCMITopology"));
@ -82,9 +82,9 @@ CCMITopology::~CCMITopology()
STDMETHODIMP CCMITopology::Init(PUNKNOWN UnknownAdapter, PRESOURCELIST ResourceList, PPORTTOPOLOGY Port) STDMETHODIMP CCMITopology::Init(PUNKNOWN UnknownAdapter, PRESOURCELIST ResourceList, PPORTTOPOLOGY Port)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(UnknownAdapter); //ASSERT(UnknownAdapter);
ASSERT(Port); //ASSERT(Port);
DBGPRINT(("CCMITopology::Init")); DBGPRINT(("CCMITopology::Init"));
NTSTATUS ntStatus = UnknownAdapter->QueryInterface(IID_ICMIAdapter, (PVOID *)&CMIAdapter); NTSTATUS ntStatus = UnknownAdapter->QueryInterface(IID_ICMIAdapter, (PVOID *)&CMIAdapter);
@ -111,8 +111,8 @@ STDMETHODIMP CCMITopology::Init(PUNKNOWN UnknownAdapter, PRESOURCELIST ResourceL
STDMETHODIMP CCMITopology::GetDescription(PPCFILTER_DESCRIPTOR* OutFilterDescriptor) STDMETHODIMP CCMITopology::GetDescription(PPCFILTER_DESCRIPTOR* OutFilterDescriptor)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(OutFilterDescriptor); //ASSERT(OutFilterDescriptor);
DBGPRINT(("CCMITopology::GetDescription")); DBGPRINT(("CCMITopology::GetDescription"));
*OutFilterDescriptor = &MiniportFilterDescriptor; *OutFilterDescriptor = &MiniportFilterDescriptor;
@ -122,7 +122,7 @@ STDMETHODIMP CCMITopology::GetDescription(PPCFILTER_DESCRIPTOR* OutFilterDescri
STDMETHODIMP CCMITopology::loadMixerSettingsFromRegistry() STDMETHODIMP CCMITopology::loadMixerSettingsFromRegistry()
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CCMITopology::loadMixerSettingsFromRegistry")); DBGPRINT(("CCMITopology::loadMixerSettingsFromRegistry"));
PREGISTRYKEY DriverKey; PREGISTRYKEY DriverKey;
@ -269,7 +269,7 @@ STDMETHODIMP CCMITopology::loadMixerSettingsFromRegistry()
STDMETHODIMP CCMITopology::storeMixerSettingsToRegistry() STDMETHODIMP CCMITopology::storeMixerSettingsToRegistry()
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CCMITopology::storeMixerSettingsToRegistry")); DBGPRINT(("CCMITopology::storeMixerSettingsToRegistry"));
PREGISTRYKEY DriverKey; PREGISTRYKEY DriverKey;
@ -429,7 +429,7 @@ STDMETHODIMP CCMITopology::storeMixerSettingsToRegistry()
STDMETHODIMP CCMITopology::loadMixerSettingsFromMemory() STDMETHODIMP CCMITopology::loadMixerSettingsFromMemory()
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CCMITopology::loadMixerSettingsFromMemory")); DBGPRINT(("CCMITopology::loadMixerSettingsFromMemory"));
CMIAdapter->resetMixer(); CMIAdapter->resetMixer();
@ -449,7 +449,7 @@ STDMETHODIMP CCMITopology::loadMixerSettingsFromMemory()
STDMETHODIMP CCMITopology::storeMixerSettingsToMemory() STDMETHODIMP CCMITopology::storeMixerSettingsToMemory()
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CCMITopology::storeMixerSettingsToMemory")); DBGPRINT(("CCMITopology::storeMixerSettingsToMemory"));
mixer1Register = CMIAdapter->readUInt8(REG_MIXER1); mixer1Register = CMIAdapter->readUInt8(REG_MIXER1);
@ -462,10 +462,10 @@ STDMETHODIMP CCMITopology::storeMixerSettingsToMemory()
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
static NTSTATUS PropertyHandler_OnOff(PPCPROPERTY_REQUEST PropertyRequest) NTSTATUS NTAPI PropertyHandler_OnOff(PPCPROPERTY_REQUEST PropertyRequest)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(PropertyRequest); //ASSERT(PropertyRequest);
DBGPRINT(("[PropertyHandler_OnOff]")); DBGPRINT(("[PropertyHandler_OnOff]"));
CCMITopology *that = (CCMITopology *) ((PMINIPORTTOPOLOGY) PropertyRequest->MajorTarget); CCMITopology *that = (CCMITopology *) ((PMINIPORTTOPOLOGY) PropertyRequest->MajorTarget);
@ -1013,8 +1013,8 @@ static NTSTATUS PropertyHandler_OnOff(PPCPROPERTY_REQUEST PropertyRequest)
static NTSTATUS BasicSupportHandler(PPCPROPERTY_REQUEST PropertyRequest) static NTSTATUS BasicSupportHandler(PPCPROPERTY_REQUEST PropertyRequest)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(PropertyRequest); //ASSERT(PropertyRequest);
DBGPRINT(("[BasicSupportHandler]")); DBGPRINT(("[BasicSupportHandler]"));
NTSTATUS ntStatus = STATUS_INVALID_DEVICE_REQUEST; NTSTATUS ntStatus = STATUS_INVALID_DEVICE_REQUEST;
@ -1081,10 +1081,10 @@ static NTSTATUS BasicSupportHandler(PPCPROPERTY_REQUEST PropertyRequest)
return ntStatus; return ntStatus;
} }
static NTSTATUS PropertyHandler_Level(PPCPROPERTY_REQUEST PropertyRequest) NTSTATUS NTAPI PropertyHandler_Level(PPCPROPERTY_REQUEST PropertyRequest)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(PropertyRequest); //ASSERT(PropertyRequest);
DBGPRINT(("[PropertyHandler_Level]")); DBGPRINT(("[PropertyHandler_Level]"));
CCMITopology *that = (CCMITopology *) ((PMINIPORTTOPOLOGY) PropertyRequest->MajorTarget); CCMITopology *that = (CCMITopology *) ((PMINIPORTTOPOLOGY) PropertyRequest->MajorTarget);
@ -1218,11 +1218,10 @@ static NTSTATUS PropertyHandler_Level(PPCPROPERTY_REQUEST PropertyRequest)
return ntStatus; return ntStatus;
} }
NTSTATUS NTAPI PropertyHandler_CpuResources(PPCPROPERTY_REQUEST PropertyRequest)
static NTSTATUS PropertyHandler_CpuResources(PPCPROPERTY_REQUEST PropertyRequest)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(PropertyRequest); //ASSERT(PropertyRequest);
DBGPRINT(("[PropertyHandler_CpuResources]")); DBGPRINT(("[PropertyHandler_CpuResources]"));
NTSTATUS ntStatus = STATUS_INVALID_DEVICE_REQUEST; NTSTATUS ntStatus = STATUS_INVALID_DEVICE_REQUEST;
@ -1271,10 +1270,10 @@ static NTSTATUS PropertyHandler_CpuResources(PPCPROPERTY_REQUEST PropertyReque
return ntStatus; return ntStatus;
} }
NTSTATUS PropertyHandler_ComponentId(PPCPROPERTY_REQUEST PropertyRequest) NTSTATUS NTAPI PropertyHandler_ComponentId(PPCPROPERTY_REQUEST PropertyRequest)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(PropertyRequest); //ASSERT(PropertyRequest);
DBGPRINT(("[PropertyHandler_ComponentId]")); DBGPRINT(("[PropertyHandler_ComponentId]"));
NTSTATUS ntStatus = STATUS_INVALID_DEVICE_REQUEST; NTSTATUS ntStatus = STATUS_INVALID_DEVICE_REQUEST;
@ -1317,10 +1316,10 @@ NTSTATUS PropertyHandler_ComponentId(PPCPROPERTY_REQUEST PropertyRequest)
return ntStatus; return ntStatus;
} }
NTSTATUS PropertyHandler_Private(PPCPROPERTY_REQUEST PropertyRequest) NTSTATUS NTAPI PropertyHandler_Private(PPCPROPERTY_REQUEST PropertyRequest)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(PropertyRequest); //ASSERT(PropertyRequest);
DBGPRINT(("[PropertyHandler_Private]")); DBGPRINT(("[PropertyHandler_Private]"));
NTSTATUS ntStatus = STATUS_INVALID_DEVICE_REQUEST; NTSTATUS ntStatus = STATUS_INVALID_DEVICE_REQUEST;
@ -1347,8 +1346,8 @@ NTSTATUS PropertyHandler_Private(PPCPROPERTY_REQUEST PropertyRequest)
#endif #endif
cmiData->hardwareRevision = that->cm->chipVersion; cmiData->hardwareRevision = that->cm->chipVersion;
cmiData->maxChannels = that->cm->maxChannels; cmiData->maxChannels = that->cm->maxChannels;
cmiData->IOBase = (USHORT)that->cm->IOBase; cmiData->IOBase = (USHORT)(ULONG_PTR)that->cm->IOBase;
cmiData->MPUBase = (USHORT)that->cm->MPUBase; cmiData->MPUBase = (USHORT)(ULONG_PTR)that->cm->MPUBase;
cmiData->enableSPDO = that->cm->enableSPDIFOut; cmiData->enableSPDO = that->cm->enableSPDIFOut;
cmiData->enableSPDI = that->cm->enableSPDIFIn; cmiData->enableSPDI = that->cm->enableSPDIFIn;
cmiData->formatMask = that->cm->formatMask; cmiData->formatMask = that->cm->formatMask;

View file

@ -80,14 +80,14 @@ public:
); );
//friends //friends
friend NTSTATUS PropertyHandler_OnOff(PPCPROPERTY_REQUEST PropertyRequest); friend NTSTATUS NTAPI PropertyHandler_OnOff(PPCPROPERTY_REQUEST PropertyRequest);
friend NTSTATUS PropertyHandler_Level(PPCPROPERTY_REQUEST PropertyRequest); friend NTSTATUS NTAPI PropertyHandler_Level(PPCPROPERTY_REQUEST PropertyRequest);
friend NTSTATUS PropertyHandler_CpuResources(PPCPROPERTY_REQUEST PropertyRequest); friend NTSTATUS NTAPI PropertyHandler_CpuResources(PPCPROPERTY_REQUEST PropertyRequest);
friend NTSTATUS PropertyHandler_ComponentId(PPCPROPERTY_REQUEST PropertyRequest); friend NTSTATUS NTAPI PropertyHandler_ComponentId(PPCPROPERTY_REQUEST PropertyRequest);
friend NTSTATUS PropertyHandler_Private(PPCPROPERTY_REQUEST PropertyRequest); friend NTSTATUS NTAPI PropertyHandler_Private(PPCPROPERTY_REQUEST PropertyRequest);
friend NTSTATUS PropertyHandler_Mux(PPCPROPERTY_REQUEST PropertyRequest); friend NTSTATUS NTAPI PropertyHandler_Mux(PPCPROPERTY_REQUEST PropertyRequest);
static NTSTATUS EventHandler(PPCEVENT_REQUEST EventRequest); static NTSTATUS NTAPI EventHandler(PPCEVENT_REQUEST EventRequest);
}; };
#endif //_MINTOPO_HPP_ #endif //_MINTOPO_HPP_

View file

@ -37,6 +37,11 @@ DEFINE_GUIDSTRUCT("00000092-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_D
#define KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF) #define KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF)
#endif #endif
NTSTATUS NTAPI PropertyHandler_Level(PPCPROPERTY_REQUEST PropertyRequest);
NTSTATUS NTAPI PropertyHandler_CpuResources(PPCPROPERTY_REQUEST PropertyRequest);
NTSTATUS NTAPI PropertyHandler_OnOff(PPCPROPERTY_REQUEST PropertyRequest);
NTSTATUS NTAPI PropertyHandler_ComponentId(PPCPROPERTY_REQUEST PropertyRequest);
NTSTATUS NTAPI PropertyHandler_Private(PPCPROPERTY_REQUEST PropertyRequest);
static KSDATARANGE PinDataRangesBridge[] = static KSDATARANGE PinDataRangesBridge[] =
{ {
@ -292,15 +297,16 @@ static PCPROPERTY_ITEM PropertiesVolume[] =
&KSPROPSETID_Audio, &KSPROPSETID_Audio,
KSPROPERTY_AUDIO_VOLUMELEVEL, KSPROPERTY_AUDIO_VOLUMELEVEL,
KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_BASICSUPPORT, KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_BASICSUPPORT,
PropertyHandler_Level (PCPFNPROPERTY_HANDLER)PropertyHandler_Level
}, },
{ {
&KSPROPSETID_Audio, &KSPROPSETID_Audio,
KSPROPERTY_AUDIO_CPU_RESOURCES, KSPROPERTY_AUDIO_CPU_RESOURCES,
KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT,
PropertyHandler_CpuResources (PCPFNPROPERTY_HANDLER)PropertyHandler_CpuResources
} }
}; };
DEFINE_PCAUTOMATION_TABLE_PROP(AutomationVolume,PropertiesVolume); DEFINE_PCAUTOMATION_TABLE_PROP(AutomationVolume,PropertiesVolume);
static PCPROPERTY_ITEM PropertiesLoudness[] = static PCPROPERTY_ITEM PropertiesLoudness[] =
@ -309,13 +315,13 @@ static PCPROPERTY_ITEM PropertiesLoudness[] =
&KSPROPSETID_Audio, &KSPROPSETID_Audio,
KSPROPERTY_AUDIO_LOUDNESS, KSPROPERTY_AUDIO_LOUDNESS,
KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_BASICSUPPORT, KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_BASICSUPPORT,
PropertyHandler_OnOff (PCPFNPROPERTY_HANDLER)PropertyHandler_OnOff
}, },
{ {
&KSPROPSETID_Audio, &KSPROPSETID_Audio,
KSPROPERTY_AUDIO_CPU_RESOURCES, KSPROPERTY_AUDIO_CPU_RESOURCES,
KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT,
PropertyHandler_CpuResources (PCPFNPROPERTY_HANDLER)PropertyHandler_CpuResources
} }
}; };
DEFINE_PCAUTOMATION_TABLE_PROP(AutomationLoudness,PropertiesLoudness); DEFINE_PCAUTOMATION_TABLE_PROP(AutomationLoudness,PropertiesLoudness);
@ -326,13 +332,13 @@ static PCPROPERTY_ITEM PropertiesMute[] =
&KSPROPSETID_Audio, &KSPROPSETID_Audio,
KSPROPERTY_AUDIO_MUTE, KSPROPERTY_AUDIO_MUTE,
KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_BASICSUPPORT, KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_BASICSUPPORT,
PropertyHandler_OnOff (PCPFNPROPERTY_HANDLER)PropertyHandler_OnOff
}, },
{ {
&KSPROPSETID_Audio, &KSPROPSETID_Audio,
KSPROPERTY_AUDIO_CPU_RESOURCES, KSPROPERTY_AUDIO_CPU_RESOURCES,
KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT,
PropertyHandler_CpuResources (PCPFNPROPERTY_HANDLER)PropertyHandler_CpuResources
} }
}; };
DEFINE_PCAUTOMATION_TABLE_PROP(AutomationMute,PropertiesMute); DEFINE_PCAUTOMATION_TABLE_PROP(AutomationMute,PropertiesMute);
@ -343,19 +349,19 @@ static PCPROPERTY_ITEM PropertiesFilter[] =
&KSPROPSETID_General, &KSPROPSETID_General,
KSPROPERTY_GENERAL_COMPONENTID, KSPROPERTY_GENERAL_COMPONENTID,
KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT, KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_BASICSUPPORT,
PropertyHandler_ComponentId (PCPFNPROPERTY_HANDLER)PropertyHandler_ComponentId
}, },
{ {
&KSPROPSETID_CMI, &KSPROPSETID_CMI,
KSPROPERTY_CMI_GET, KSPROPERTY_CMI_GET,
KSPROPERTY_TYPE_GET, KSPROPERTY_TYPE_GET,
PropertyHandler_Private (PCPFNPROPERTY_HANDLER)PropertyHandler_Private
}, },
{ {
&KSPROPSETID_CMI, &KSPROPSETID_CMI,
KSPROPERTY_CMI_SET, KSPROPERTY_CMI_SET,
KSPROPERTY_TYPE_SET, KSPROPERTY_TYPE_SET,
PropertyHandler_Private (PCPFNPROPERTY_HANDLER)PropertyHandler_Private
} }
}; };
DEFINE_PCAUTOMATION_TABLE_PROP(AutomationFilter,PropertiesFilter); DEFINE_PCAUTOMATION_TABLE_PROP(AutomationFilter,PropertiesFilter);

View file

@ -33,8 +33,8 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
NTSTATUS CreateMiniportWaveCMI(PUNKNOWN *Unknown, REFCLSID, PUNKNOWN UnknownOuter, POOL_TYPE PoolType) NTSTATUS CreateMiniportWaveCMI(PUNKNOWN *Unknown, REFCLSID, PUNKNOWN UnknownOuter, POOL_TYPE PoolType)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(Unknown); //ASSERT(Unknown);
#ifdef WAVERT #ifdef WAVERT
STD_CREATE_BODY_(CMiniportWaveCMI,Unknown,UnknownOuter,PoolType,PMINIPORTWAVERT); STD_CREATE_BODY_(CMiniportWaveCMI,Unknown,UnknownOuter,PoolType,PMINIPORTWAVERT);
#else #else
@ -44,8 +44,8 @@ NTSTATUS CreateMiniportWaveCMI(PUNKNOWN *Unknown, REFCLSID, PUNKNOWN UnknownOute
NTSTATUS CMiniportWaveCMI::processResources(PRESOURCELIST resourceList) NTSTATUS CMiniportWaveCMI::processResources(PRESOURCELIST resourceList)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT (resourceList); //ASSERT (resourceList);
DBGPRINT(("CMiniportWaveCMI[%p]::ProcessResources(%p)", this, resourceList)); DBGPRINT(("CMiniportWaveCMI[%p]::ProcessResources(%p)", this, resourceList));
if (resourceList->NumberOfInterrupts() < 1) { if (resourceList->NumberOfInterrupts() < 1) {
@ -58,8 +58,8 @@ NTSTATUS CMiniportWaveCMI::processResources(PRESOURCELIST resourceList)
#ifndef WAVERT #ifndef WAVERT
NTSTATUS CMiniportWaveCMI::newDMAChannel(PDMACHANNEL *dmaChannel, UInt32 bufferLength) NTSTATUS CMiniportWaveCMI::newDMAChannel(PDMACHANNEL *dmaChannel, UInt32 bufferLength)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(dmaChannel); //ASSERT(dmaChannel);
DBGPRINT(("CMiniportWaveCMI[%p]::newDMAChannel(%p)", this, dmaChannel)); DBGPRINT(("CMiniportWaveCMI[%p]::newDMAChannel(%p)", this, dmaChannel));
NTSTATUS ntStatus; NTSTATUS ntStatus;
@ -79,8 +79,8 @@ NTSTATUS CMiniportWaveCMI::newDMAChannel(PDMACHANNEL *dmaChannel, UInt32 bufferL
//generic crap //generic crap
STDMETHODIMP CMiniportWaveCMI::NonDelegatingQueryInterface(REFIID Interface, PVOID *Object) STDMETHODIMP CMiniportWaveCMI::NonDelegatingQueryInterface(REFIID Interface, PVOID *Object)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(Object); //ASSERT(Object);
DBGPRINT(("CMiniportWaveCMI[%p]::NonDelegatingQueryInterface")); DBGPRINT(("CMiniportWaveCMI[%p]::NonDelegatingQueryInterface"));
if (IsEqualGUIDAligned(Interface,IID_IUnknown)) { if (IsEqualGUIDAligned(Interface,IID_IUnknown)) {
@ -113,7 +113,7 @@ STDMETHODIMP CMiniportWaveCMI::NonDelegatingQueryInterface(REFIID Interface, PVO
CMiniportWaveCMI::~CMiniportWaveCMI(void) CMiniportWaveCMI::~CMiniportWaveCMI(void)
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CMiniportWaveCMI[%p]::~CMiniportWaveCMI", this)); DBGPRINT(("CMiniportWaveCMI[%p]::~CMiniportWaveCMI", this));
storeChannelConfigToRegistry(); //or not. during system shutdown, this doesn't seem to work. storeChannelConfigToRegistry(); //or not. during system shutdown, this doesn't seem to work.
@ -149,11 +149,11 @@ STDMETHODIMP CMiniportWaveCMI::Init(PUNKNOWN UnknownAdapter, PRESOURCELIST Resou
STDMETHODIMP CMiniportWaveCMI::Init(PUNKNOWN UnknownAdapter, PRESOURCELIST ResourceList, PPORTWAVECYCLIC Port_) STDMETHODIMP CMiniportWaveCMI::Init(PUNKNOWN UnknownAdapter, PRESOURCELIST ResourceList, PPORTWAVECYCLIC Port_)
#endif #endif
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(UnknownAdapter); //ASSERT(UnknownAdapter);
ASSERT(ResourceList); //ASSERT(ResourceList);
ASSERT(Port_); //ASSERT(Port_);
DBGPRINT(("CMiniportWaveCMI[%p]::Init(%p, %p, %p)", this, UnknownAdapter, ResourceList, Port_)); DBGPRINT(("CMiniportWaveCMI[%p]::Init(%p, %p, %p)", this, UnknownAdapter, ResourceList, Port_));
@ -201,8 +201,8 @@ STDMETHODIMP CMiniportWaveCMI::Init(PUNKNOWN UnknownAdapter, PRESOURCELIST Resou
#ifdef WAVERT #ifdef WAVERT
STDMETHODIMP_(NTSTATUS) CMiniportWaveCMI::GetDeviceDescription(PDEVICE_DESCRIPTION OutDeviceDescriptor) STDMETHODIMP_(NTSTATUS) CMiniportWaveCMI::GetDeviceDescription(PDEVICE_DESCRIPTION OutDeviceDescriptor)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(OutDeviceDescriptor); //ASSERT(OutDeviceDescriptor);
DBGPRINT(("CMiniportWaveCMI[%p]::GetDeviceDescription(%p)", this, OutDeviceDescriptor)); DBGPRINT(("CMiniportWaveCMI[%p]::GetDeviceDescription(%p)", this, OutDeviceDescriptor));
RtlZeroMemory(OutDeviceDescriptor, sizeof(DEVICE_DESCRIPTION)); RtlZeroMemory(OutDeviceDescriptor, sizeof(DEVICE_DESCRIPTION));
@ -218,8 +218,8 @@ STDMETHODIMP_(NTSTATUS) CMiniportWaveCMI::GetDeviceDescription(PDEVICE_DESCRIPTI
STDMETHODIMP CMiniportWaveCMI::GetDescription(PPCFILTER_DESCRIPTOR *OutFilterDescriptor) STDMETHODIMP CMiniportWaveCMI::GetDescription(PPCFILTER_DESCRIPTOR *OutFilterDescriptor)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(OutFilterDescriptor); //ASSERT(OutFilterDescriptor);
DBGPRINT(("CMiniportWaveCMI[%p]::GetDescription(%p)", this, OutFilterDescriptor)); DBGPRINT(("CMiniportWaveCMI[%p]::GetDescription(%p)", this, OutFilterDescriptor));
*OutFilterDescriptor = &WaveMiniportFilterDescriptor; *OutFilterDescriptor = &WaveMiniportFilterDescriptor;
@ -229,7 +229,7 @@ STDMETHODIMP CMiniportWaveCMI::GetDescription(PPCFILTER_DESCRIPTOR *OutFilterDes
NTSTATUS CMiniportWaveCMI::loadChannelConfigFromRegistry() NTSTATUS CMiniportWaveCMI::loadChannelConfigFromRegistry()
{ {
PAGED_CODE(); //PAGED_CODE();
PREGISTRYKEY DriverKey; PREGISTRYKEY DriverKey;
PREGISTRYKEY SettingsKey; PREGISTRYKEY SettingsKey;
UNICODE_STRING KeyName; UNICODE_STRING KeyName;
@ -291,7 +291,7 @@ NTSTATUS CMiniportWaveCMI::loadChannelConfigFromRegistry()
NTSTATUS CMiniportWaveCMI::storeChannelConfigToRegistry() NTSTATUS CMiniportWaveCMI::storeChannelConfigToRegistry()
{ {
PAGED_CODE(); //PAGED_CODE();
PREGISTRYKEY DriverKey; PREGISTRYKEY DriverKey;
PREGISTRYKEY SettingsKey; PREGISTRYKEY SettingsKey;
UNICODE_STRING KeyName; UNICODE_STRING KeyName;
@ -339,7 +339,7 @@ NTSTATUS CMiniportWaveCMI::storeChannelConfigToRegistry()
STDMETHODIMP_(void) CMiniportWaveCMI::powerUp(void) STDMETHODIMP_(void) CMiniportWaveCMI::powerUp(void)
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CMiniportWaveCMI[%p]::powerUp()", this)); DBGPRINT(("CMiniportWaveCMI[%p]::powerUp()", this));
KSSTATE oldState[3]; KSSTATE oldState[3];
@ -365,7 +365,7 @@ STDMETHODIMP_(void) CMiniportWaveCMI::powerUp(void)
STDMETHODIMP_(void) CMiniportWaveCMI::powerDown(void) STDMETHODIMP_(void) CMiniportWaveCMI::powerDown(void)
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CMiniportWaveCMI[%p]::powerDown()", this)); DBGPRINT(("CMiniportWaveCMI[%p]::powerDown()", this));
if (cm->TopoMiniport) { if (cm->TopoMiniport) {
@ -377,8 +377,8 @@ STDMETHODIMP_(void) CMiniportWaveCMI::powerDown(void)
NTSTATUS CMiniportWaveCMI::isFormatAllowed(UInt32 sampleRate, BOOLEAN multiChan, BOOLEAN AC3) NTSTATUS CMiniportWaveCMI::isFormatAllowed(UInt32 sampleRate, BOOLEAN multiChan, BOOLEAN AC3)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(sampleRate); //ASSERT(sampleRate);
DBGPRINT(("CMiniportWaveCMI[%p]::isFormatAllowed(%d, %d, %d)", this, sampleRate, multiChan, AC3)); DBGPRINT(("CMiniportWaveCMI[%p]::isFormatAllowed(%d, %d, %d)", this, sampleRate, multiChan, AC3));
if (multiChan) { if (multiChan) {
@ -410,8 +410,8 @@ NTSTATUS CMiniportWaveCMI::isFormatAllowed(UInt32 sampleRate, BOOLEAN multiChan,
NTSTATUS CMiniportWaveCMI::validateFormat(PKSDATAFORMAT format, ULONG PinID, BOOLEAN capture) NTSTATUS CMiniportWaveCMI::validateFormat(PKSDATAFORMAT format, ULONG PinID, BOOLEAN capture)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(format); //ASSERT(format);
DBGPRINT(("CMiniportWaveCMI[%p]::validateFormat(%p, %d, %d)", this, format, PinID, capture)); DBGPRINT(("CMiniportWaveCMI[%p]::validateFormat(%p, %d, %d)", this, format, PinID, capture));
PWAVEFORMATEX waveFormat = PWAVEFORMATEX(format + 1); PWAVEFORMATEX waveFormat = PWAVEFORMATEX(format + 1);
@ -468,7 +468,7 @@ NTSTATUS CMiniportWaveCMI::validateFormat(PKSDATAFORMAT format, ULONG PinID, BOO
// Tests a data range intersection // Tests a data range intersection
STDMETHODIMP CMiniportWaveCMI::DataRangeIntersection(ULONG PinId, PKSDATARANGE ClientDataRange, PKSDATARANGE MyDataRange, ULONG OutputBufferLength, PVOID ResultantFormat, PULONG ResultantFormatLength) STDMETHODIMP CMiniportWaveCMI::DataRangeIntersection(ULONG PinId, PKSDATARANGE ClientDataRange, PKSDATARANGE MyDataRange, ULONG OutputBufferLength, PVOID ResultantFormat, PULONG ResultantFormatLength)
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CMiniportWaveCMI[%p]::DataRangeIntersection(%d, %p, %p, %d, %p, %p)", this, PinId, ClientDataRange, MyDataRange, OutputBufferLength, ResultantFormat, ResultantFormatLength)); DBGPRINT(("CMiniportWaveCMI[%p]::DataRangeIntersection(%d, %p, %p, %d, %p, %p)", this, PinId, ClientDataRange, MyDataRange, OutputBufferLength, ResultantFormat, ResultantFormatLength));
if (PinId == PIN_WAVE_AC3_RENDER_SINK) { if (PinId == PIN_WAVE_AC3_RENDER_SINK) {
@ -722,14 +722,14 @@ STDMETHODIMP CMiniportWaveCMI::NewStream(PMINIPORTWAVERTSTREAM *OutStream, PPORT
STDMETHODIMP CMiniportWaveCMI::NewStream(PMINIPORTWAVECYCLICSTREAM *OutStream, PUNKNOWN OuterUnknown, POOL_TYPE PoolType, ULONG PinID, BOOLEAN Capture, PKSDATAFORMAT DataFormat, PDMACHANNEL* OutDmaChannel, PSERVICEGROUP* OutServiceGroup) STDMETHODIMP CMiniportWaveCMI::NewStream(PMINIPORTWAVECYCLICSTREAM *OutStream, PUNKNOWN OuterUnknown, POOL_TYPE PoolType, ULONG PinID, BOOLEAN Capture, PKSDATAFORMAT DataFormat, PDMACHANNEL* OutDmaChannel, PSERVICEGROUP* OutServiceGroup)
#endif #endif
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(OutStream); //ASSERT(OutStream);
ASSERT(DataFormat); //ASSERT(DataFormat);
#ifdef WAVERT #ifdef WAVERT
DBGPRINT(("CMiniportWaveCMI[%p]::NewStream(%p, %p, %d, %d, %p)", this, OutStream, OuterUnknown, PinID, Capture, DataFormat)); DBGPRINT(("CMiniportWaveCMI[%p]::NewStream(%p, %p, %d, %d, %p)", this, OutStream, OuterUnknown, PinID, Capture, DataFormat));
#else #else
ASSERT(OutDmaChannel); //ASSERT(OutDmaChannel);
ASSERT(OutServiceGroup); //ASSERT(OutServiceGroup);
DBGPRINT(("CMiniportWaveCMI[%p]::NewStream(%p, %p, %p, %d, %d, %p, %p, %p)", this, OutStream, OuterUnknown, PoolType, PinID, Capture, DataFormat, OutDmaChannel, OutServiceGroup)); DBGPRINT(("CMiniportWaveCMI[%p]::NewStream(%p, %p, %p, %d, %d, %p, %p, %p)", this, OutStream, OuterUnknown, PoolType, PinID, Capture, DataFormat, OutDmaChannel, OutServiceGroup));
#endif #endif
@ -820,10 +820,10 @@ STDMETHODIMP CMiniportWaveCMI::NewStream(PMINIPORTWAVECYCLICSTREAM *OutStream, P
return ntStatus; return ntStatus;
} }
static NTSTATUS PropertyHandler_ChannelConfig(PPCPROPERTY_REQUEST PropertyRequest) NTSTATUS NTAPI PropertyHandler_ChannelConfig(PPCPROPERTY_REQUEST PropertyRequest)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(PropertyRequest); //ASSERT(PropertyRequest);
DBGPRINT(("[PropertyHandler_ChannelConfig]")); DBGPRINT(("[PropertyHandler_ChannelConfig]"));
#ifdef WAVERT #ifdef WAVERT
@ -881,7 +881,7 @@ static NTSTATUS PropertyHandler_ChannelConfig(PPCPROPERTY_REQUEST PropertyReques
NTSTATUS CreateMiniportWaveStreamCMI(CMiniportWaveStreamCMI **MiniportWaveStreamCMI, PUNKNOWN pUnknownOuter, POOL_TYPE PoolType) NTSTATUS CreateMiniportWaveStreamCMI(CMiniportWaveStreamCMI **MiniportWaveStreamCMI, PUNKNOWN pUnknownOuter, POOL_TYPE PoolType)
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CreateMiniportWaveStreamCMI")); DBGPRINT(("CreateMiniportWaveStreamCMI"));
#ifdef WAVERT #ifdef WAVERT
@ -899,7 +899,7 @@ NTSTATUS CreateMiniportWaveStreamCMI(CMiniportWaveStreamCMI **MiniportWaveStrea
NTSTATUS CMiniportWaveStreamCMI::prepareStream() NTSTATUS CMiniportWaveStreamCMI::prepareStream()
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CMiniportWaveStreamCMI[%p]::prepareStream()", this)); DBGPRINT(("CMiniportWaveStreamCMI[%p]::prepareStream()", this));
DBGPRINT(("---streamIndex: %d, channelNumber: %d", streamIndex, channelNumber)); DBGPRINT(("---streamIndex: %d, channelNumber: %d", streamIndex, channelNumber));
@ -982,7 +982,7 @@ NTSTATUS CMiniportWaveStreamCMI::prepareStream()
NTSTATUS CMiniportWaveStreamCMI::setDACChannels() NTSTATUS CMiniportWaveStreamCMI::setDACChannels()
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CMiniportWaveStreamCMI[%p]::setDACChannels()", this)); DBGPRINT(("CMiniportWaveStreamCMI[%p]::setDACChannels()", this));
NTSTATUS ntStatus = STATUS_SUCCESS; NTSTATUS ntStatus = STATUS_SUCCESS;
@ -1046,7 +1046,7 @@ NTSTATUS CMiniportWaveStreamCMI::setDACChannels()
NTSTATUS CMiniportWaveStreamCMI::setupSPDIFPlayback(bool enableSPDIF) NTSTATUS CMiniportWaveStreamCMI::setupSPDIFPlayback(bool enableSPDIF)
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CMiniportWaveStreamCMI[%p]::setupSPDIFPlayback(%d)", this, enableSPDIF)); DBGPRINT(("CMiniportWaveStreamCMI[%p]::setupSPDIFPlayback(%d)", this, enableSPDIF));
NTSTATUS ntStatus; NTSTATUS ntStatus;
@ -1115,7 +1115,7 @@ NTSTATUS CMiniportWaveStreamCMI::setupSPDIFPlayback(bool enableSPDIF)
NTSTATUS CMiniportWaveStreamCMI::setupAC3Passthru() NTSTATUS CMiniportWaveStreamCMI::setupAC3Passthru()
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CMiniportWaveStreamCMI[%p]::setupAC3Passthru()")); DBGPRINT(("CMiniportWaveStreamCMI[%p]::setupAC3Passthru()"));
if (enableAC3Passthru) { if (enableAC3Passthru) {
@ -1177,7 +1177,7 @@ NTSTATUS CMiniportWaveStreamCMI::setupAC3Passthru()
CMiniportWaveStreamCMI::~CMiniportWaveStreamCMI(void) CMiniportWaveStreamCMI::~CMiniportWaveStreamCMI(void)
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CMiniportWaveStreamCMI[%p]::~CMiniportWaveStreamCMI", this)); DBGPRINT(("CMiniportWaveStreamCMI[%p]::~CMiniportWaveStreamCMI", this));
@ -1217,8 +1217,8 @@ CMiniportWaveStreamCMI::~CMiniportWaveStreamCMI(void)
STDMETHODIMP CMiniportWaveStreamCMI::NonDelegatingQueryInterface(REFIID Interface, PVOID *Object) STDMETHODIMP CMiniportWaveStreamCMI::NonDelegatingQueryInterface(REFIID Interface, PVOID *Object)
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(Object); //ASSERT(Object);
DBGPRINT(("CMiniportWaveStreamCMI[%p]::NonDelegatingQueryInterface(%p, %p)", this, Interface, Object)); DBGPRINT(("CMiniportWaveStreamCMI[%p]::NonDelegatingQueryInterface(%p, %p)", this, Interface, Object));
if (IsEqualGUIDAligned(Interface,IID_IUnknown)) { if (IsEqualGUIDAligned(Interface,IID_IUnknown)) {
@ -1250,14 +1250,14 @@ NTSTATUS CMiniportWaveStreamCMI::Init(CMiniportWaveCMI* Miniport_, UInt32 stream
NTSTATUS CMiniportWaveStreamCMI::Init(CMiniportWaveCMI* Miniport_, UInt32 streamIndex_, bool isCaptureStream_, PKSDATAFORMAT DataFormat, PDMACHANNEL DMAChannel_, PSERVICEGROUP* OutServiceGroup) NTSTATUS CMiniportWaveStreamCMI::Init(CMiniportWaveCMI* Miniport_, UInt32 streamIndex_, bool isCaptureStream_, PKSDATAFORMAT DataFormat, PDMACHANNEL DMAChannel_, PSERVICEGROUP* OutServiceGroup)
#endif #endif
{ {
PAGED_CODE(); //PAGED_CODE();
ASSERT(Miniport_); //ASSERT(Miniport_);
ASSERT(DataFormat); //ASSERT(DataFormat);
NTSTATUS ntStatus; NTSTATUS ntStatus;
#ifdef WAVERT #ifdef WAVERT
ASSERT(Port_); //ASSERT(Port_);
DBGPRINT(("CMiniportWaveStreamCMI[%p]::Init(%p, %d, %d, %p, %p)", this, Miniport_, streamIndex_, isCaptureStream_, DataFormat, Port_)); DBGPRINT(("CMiniportWaveStreamCMI[%p]::Init(%p, %d, %d, %p, %p)", this, Miniport_, streamIndex_, isCaptureStream_, DataFormat, Port_));
Port = Port_; Port = Port_;
Port->AddRef(); Port->AddRef();
@ -1303,7 +1303,7 @@ NTSTATUS CMiniportWaveStreamCMI::Init(CMiniportWaveCMI* Miniport_, UInt32 stream
NTSTATUS CMiniportWaveStreamCMI::SetFormat(PKSDATAFORMAT Format) NTSTATUS CMiniportWaveStreamCMI::SetFormat(PKSDATAFORMAT Format)
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CMiniportWaveStreamCMI[%p]::SetFormat(%p)", this, Format)); DBGPRINT(("CMiniportWaveStreamCMI[%p]::SetFormat(%p)", this, Format));
PWAVEFORMATEX waveFormat = PWAVEFORMATEX(Format + 1); PWAVEFORMATEX waveFormat = PWAVEFORMATEX(Format + 1);
NTSTATUS ntStatus = Miniport->validateFormat(Format, -1, isCaptureStream); NTSTATUS ntStatus = Miniport->validateFormat(Format, -1, isCaptureStream);
@ -1344,7 +1344,7 @@ NTSTATUS CMiniportWaveStreamCMI::SetFormat(PKSDATAFORMAT Format)
// DRM crap - we're supposed to disable every digital interface here // DRM crap - we're supposed to disable every digital interface here
STDMETHODIMP_(NTSTATUS) CMiniportWaveStreamCMI::SetContentId(ULONG contentId, PCDRMRIGHTS drmRights) STDMETHODIMP_(NTSTATUS) CMiniportWaveStreamCMI::SetContentId(ULONG contentId, PCDRMRIGHTS drmRights)
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CMiniportWaveStreamCMI[%p]::SetContentId(%d, %p)", this, contentId, drmRights)); DBGPRINT(("CMiniportWaveStreamCMI[%p]::SetContentId(%d, %p)", this, contentId, drmRights));
return STATUS_SUCCESS; return STATUS_SUCCESS;
@ -1354,7 +1354,7 @@ STDMETHODIMP_(NTSTATUS) CMiniportWaveStreamCMI::SetContentId(ULONG contentId, PC
STDMETHODIMP_(NTSTATUS) CMiniportWaveStreamCMI::AllocateAudioBuffer(ULONG size, PMDL *userModeBuffer, ULONG *bufferSize, ULONG *bufferOffset, MEMORY_CACHING_TYPE *cacheType) STDMETHODIMP_(NTSTATUS) CMiniportWaveStreamCMI::AllocateAudioBuffer(ULONG size, PMDL *userModeBuffer, ULONG *bufferSize, ULONG *bufferOffset, MEMORY_CACHING_TYPE *cacheType)
{ {
PAGED_CODE(); //PAGED_CODE();
PHYSICAL_ADDRESS low; PHYSICAL_ADDRESS low;
PHYSICAL_ADDRESS high; PHYSICAL_ADDRESS high;
@ -1393,7 +1393,7 @@ STDMETHODIMP_(NTSTATUS) CMiniportWaveStreamCMI::AllocateAudioBuffer(ULONG size,
STDMETHODIMP_(VOID) CMiniportWaveStreamCMI::FreeAudioBuffer(PMDL Mdl, ULONG Size) STDMETHODIMP_(VOID) CMiniportWaveStreamCMI::FreeAudioBuffer(PMDL Mdl, ULONG Size)
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CMiniportWaveStreamCMI[%p]::FreeAudioBuffer(%p, %x)", this, Mdl, Size)); DBGPRINT(("CMiniportWaveStreamCMI[%p]::FreeAudioBuffer(%p, %x)", this, Mdl, Size));
Port->FreePagesFromMdl(Mdl); Port->FreePagesFromMdl(Mdl);
@ -1403,7 +1403,7 @@ STDMETHODIMP_(VOID) CMiniportWaveStreamCMI::FreeAudioBuffer(PMDL Mdl, ULONG Size
} }
STDMETHODIMP_(void) CMiniportWaveStreamCMI::GetHWLatency(PKSRTAUDIO_HWLATENCY hwLatency) { STDMETHODIMP_(void) CMiniportWaveStreamCMI::GetHWLatency(PKSRTAUDIO_HWLATENCY hwLatency) {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CMiniportWaveStreamCMI[%p]::GetHWLatency(%p)", this, hwLatency)); DBGPRINT(("CMiniportWaveStreamCMI[%p]::GetHWLatency(%p)", this, hwLatency));
hwLatency->FifoSize = 32; hwLatency->FifoSize = 32;
hwLatency->ChipsetDelay = 0; hwLatency->ChipsetDelay = 0;
@ -1412,7 +1412,7 @@ STDMETHODIMP_(void) CMiniportWaveStreamCMI::GetHWLatency(PKSRTAUDIO_HWLATENCY hw
STDMETHODIMP_(NTSTATUS) CMiniportWaveStreamCMI::GetPositionRegister(PKSRTAUDIO_HWREGISTER hwRegister) STDMETHODIMP_(NTSTATUS) CMiniportWaveStreamCMI::GetPositionRegister(PKSRTAUDIO_HWREGISTER hwRegister)
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CMiniportWaveStreamCMI[%p]::GetPositionRegister(%p)", this, hwRegister)); DBGPRINT(("CMiniportWaveStreamCMI[%p]::GetPositionRegister(%p)", this, hwRegister));
return STATUS_UNSUCCESSFUL; return STATUS_UNSUCCESSFUL;
@ -1420,7 +1420,7 @@ STDMETHODIMP_(NTSTATUS) CMiniportWaveStreamCMI::GetPositionRegister(PKSRTAUDIO_H
STDMETHODIMP_(NTSTATUS) CMiniportWaveStreamCMI::GetClockRegister(PKSRTAUDIO_HWREGISTER hwRegister) STDMETHODIMP_(NTSTATUS) CMiniportWaveStreamCMI::GetClockRegister(PKSRTAUDIO_HWREGISTER hwRegister)
{ {
PAGED_CODE(); //PAGED_CODE();
DBGPRINT(("CMiniportWaveStreamCMI[%p]::GetClockRegister(%p)", this, hwRegister)); DBGPRINT(("CMiniportWaveStreamCMI[%p]::GetClockRegister(%p)", this, hwRegister));
return STATUS_UNSUCCESSFUL; return STATUS_UNSUCCESSFUL;
@ -1578,7 +1578,7 @@ STDMETHODIMP CMiniportWaveStreamCMI::SetState(KSSTATE NewState)
#ifdef WAVERT #ifdef WAVERT
STDMETHODIMP CMiniportWaveStreamCMI::GetPosition(PKSAUDIO_POSITION Position) STDMETHODIMP CMiniportWaveStreamCMI::GetPosition(PKSAUDIO_POSITION Position)
{ {
ASSERT(Position); //ASSERT(Position);
UInt32 reg; UInt32 reg;
@ -1597,7 +1597,7 @@ STDMETHODIMP CMiniportWaveStreamCMI::GetPosition(PKSAUDIO_POSITION Position)
#else //WaveCyclic #else //WaveCyclic
STDMETHODIMP CMiniportWaveStreamCMI::GetPosition(PULONG Position) STDMETHODIMP CMiniportWaveStreamCMI::GetPosition(PULONG Position)
{ {
ASSERT(Position); //ASSERT(Position);
UInt32 reg; UInt32 reg;

View file

@ -85,7 +85,7 @@ public:
STDMETHODIMP_(void) powerUp(); STDMETHODIMP_(void) powerUp();
STDMETHODIMP_(void) powerDown(); STDMETHODIMP_(void) powerDown();
friend NTSTATUS PropertyHandler_ChannelConfig(PPCPROPERTY_REQUEST PropertyRequest); friend NTSTATUS NTAPI PropertyHandler_ChannelConfig(PPCPROPERTY_REQUEST PropertyRequest);
friend class CMiniportWaveStreamCMI; friend class CMiniportWaveStreamCMI;
}; };

View file

@ -33,6 +33,9 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
DEFINE_GUIDSTRUCT("00000092-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF); DEFINE_GUIDSTRUCT("00000092-0000-0010-8000-00aa00389b71", KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF);
#define KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF) #define KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF DEFINE_GUIDNAMED(KSDATAFORMAT_SUBTYPE_DOLBY_AC3_SPDIF)
NTSTATUS NTAPI PropertyHandler_ChannelConfig(PPCPROPERTY_REQUEST PropertyRequest);
static KSDATARANGE_AUDIO WavePinDataRangesPCMStream[] = static KSDATARANGE_AUDIO WavePinDataRangesPCMStream[] =
{ {
{ {
@ -274,7 +277,7 @@ static PCPROPERTY_ITEM PropertiesChannels[] =
&KSPROPSETID_Audio, &KSPROPSETID_Audio,
KSPROPERTY_AUDIO_CHANNEL_CONFIG, KSPROPERTY_AUDIO_CHANNEL_CONFIG,
KSPROPERTY_TYPE_BASICSUPPORT | KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET, KSPROPERTY_TYPE_BASICSUPPORT | KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_SET,
PropertyHandler_ChannelConfig (PCPFNPROPERTY_HANDLER)PropertyHandler_ChannelConfig
} }
}; };
DEFINE_PCAUTOMATION_TABLE_PROP(AutomationChans,PropertiesChannels); DEFINE_PCAUTOMATION_TABLE_PROP(AutomationChans,PropertiesChannels);

View file

@ -83,4 +83,4 @@ typedef struct
UInt32 enableSPDI; UInt32 enableSPDI;
} CMIDATA; } CMIDATA;
#endif //_PROPERTY_H_ #endif //_PROPERTY_H_

View file

@ -1,20 +0,0 @@
TARGETNAME=cmipci
TARGETTYPE=DRIVER
TARGETPATH=obj
TARGETLIBS= $(DDK_LIB_PATH)\portcls.lib \
$(DDK_LIB_PATH)\stdunk.lib \
$(SDK_LIB_PATH)\libcntpr.lib \
$(DDK_LIB_PATH)\ntstrsafe.lib
INCLUDES=
MSC_WARNING_LEVEL=-WX
C_DEFINES= $(C_DEFINES) -D_WIN32 -DUNICODE -D_UNICODE -DDEBUG_LEVEL=DEBUGLVL_TERSE
SOURCES = adapter.cpp \
common.cpp \
mintopo.cpp \
minwave.cpp \
cmipci.rc

View file

@ -1,12 +0,0 @@
@echo off
call envars.bat
if "%CMI_DEBUGARCH%"=="AMD64" goto :x64
set CMI_DEBUGDIR=objchk_%CMI_DEBUGOS%_%CMI_DEBUGARCH%\i386
goto start
:x64
set CMI_DEBUGDIR=objchk_%CMI_DEBUGOS%_%CMI_DEBUGARCH%\AMD64
:start
devcon remove "PCI\VEN_13F6&DEV_0111&SUBSYS_011113F6&REV_10"
devcon dp_delete %CMI_OEMINF%
devcon rescan
devcon update %CMI_DEBUGDIR%\CM8738.INF "PCI\VEN_13F6&DEV_0111&SUBSYS_011113F6&REV_10"