PortCls.sys, Port Class functions for audio drivers.

svn path=/trunk/; revision=19512
This commit is contained in:
James Tabor 2005-11-24 01:05:58 +00:00
parent f8691dcde6
commit 7977e12600
5 changed files with 806 additions and 0 deletions

View file

@ -0,0 +1,505 @@
/*
* ReactOS PortCls Driver
* Copyright (C) 2005 ReactOS Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Sound System
* PURPOSE: Audio Port Class Functions
* FILE: drivers/dd/sound/portcls/portcls.c
* PROGRAMMERS:
*
* REVISION HISTORY:
* 21 November 2005 Created James Tabor
*/
#include <windows.h>
#include "portcls.h"
#define NDEBUG
#include <debug.h>
NTSTATUS STDCALL
DriverEntry(PDRIVER_OBJECT DriverObject,
PUNICODE_STRING RegistryPath)
{
return STATUS_SUCCESS;
}
/*
* @implemented
*/
DWORD STDCALL
DllInitialize(DWORD Unknown)
{
return 0;
}
/*
* @implemented
*/
DWORD STDCALL
DllUnload(VOID)
{
return 0;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcAddAdapterDevice(
DWORD DriverObject,
DWORD PhysicalDeviceObject,
DWORD StartDevice,
DWORD MaxObjects,
DWORD DeviceExtensionSize
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcAddContentHandlers(
DWORD ContentId,
DWORD paHandlers,
DWORD NumHandlers
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcCompleteIrp(
DWORD DeviceObject,
DWORD Irp,
DWORD Status
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcCompletePendingPropertyRequest(
DWORD PropertyRequest,
DWORD NtStatus
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcCreateContentMixed(
DWORD paContentId,
DWORD cContentId,
DWORD pMixedContentId
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcDestroyContent(
DWORD ContentId
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcDispatchIrp(
DWORD DeviceObject,
DWORD Irp
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcForwardContentToDeviceObject(
DWORD ContentId,
DWORD Reserved,
DWORD DrmForward
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcForwardContentToFileObject(
DWORD ContentId,
DWORD FileObject
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcForwardContentToInterface(
DWORD ContentId,
DWORD Unknown,
DWORD NumMethods
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcForwardIrpSynchronous(
DWORD DeviceObject,
DWORD Irp
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcGetContentRights(
DWORD ContentId,
DWORD DrmRights
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcGetDeviceProperty(
DWORD DeviceObject,
DWORD DeviceProperty,
DWORD BufferLength,
DWORD PropertyBuffer,
DWORD ResultLength
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
ULONGLONG STDCALL
PcGetTimeInterval(
ULONGLONG Timei
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcInitializeAdapterDriver(
DWORD DriverObject,
DWORD RegistryPathName,
DWORD AddDevice
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcNewDmaChannel(
DWORD OutDmaChannel,
DWORD Unknown,
DWORD PoolType,
DWORD DeviceDescription,
DWORD DeviceObject
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcNewInterruptSync(
DWORD OutInterruptSync,
DWORD Unknown,
DWORD ResourceList,
DWORD ResourceIndex,
DWORD Mode
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcNewMiniport(
DWORD OutMiniport,
DWORD ClassId
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcNewPort(
DWORD OutPort,
DWORD ClassId
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcNewRegistryKey(
DWORD OutRegistryKey,
DWORD Unknown,
DWORD RegistryKeyType,
DWORD DesiredAccess,
DWORD DeviceObject,
DWORD SubDevice,
DWORD ObjectAttributes,
DWORD CreateOptions,
DWORD Disposition
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcNewResourceList(
DWORD OutResourceList,
DWORD Unknown,
DWORD PoolType,
DWORD TranslatedResources,
DWORD UntranslatedResources
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcNewResourceSublist(
DWORD OutResourceList,
DWORD Unknown,
DWORD PoolType,
DWORD ParentList,
DWORD MaximumEntries
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcNewServiceGroup(
DWORD OutServiceGroup,
DWORD Unknown
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcRegisterAdapterPowerManagement(
DWORD Unknown,
DWORD pvContext
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcRegisterIoTimeout(
DWORD pDeviceObject,
DWORD pTimerRoutine,
DWORD pContext
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcRegisterPhysicalConnection(
DWORD DeviceObject,
DWORD FromUnknown,
DWORD FromPin,
DWORD ToUnknown,
DWORD ToPin
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcRegisterPhysicalConnectionFromExternal(
DWORD DeviceObject,
DWORD FromString,
DWORD FromPin,
DWORD ToUnknown,
DWORD ToPin
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcRegisterPhysicalConnectionToExternal(
DWORD DeviceObject,
DWORD FromUnknown,
DWORD FromPin,
DWORD ToString,
DWORD ToPin
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcRegisterSubdevice(
DWORD DeviceObject,
DWORD SubdevName,
DWORD Unknown
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcRequestNewPowerState(
DWORD pDeviceObject,
DWORD RequestedNewState
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcUnregisterIoTimeout(
DWORD pDeviceObject,
DWORD pTimerRoutine,
DWORD pContext
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}

View file

@ -0,0 +1,36 @@
;
; Exports definition file for portcls.sys
;
EXPORTS
PcAddAdapterDevice@20
PcAddContentHandlers@12
PcCompleteIrp@12
PcCompletePendingPropertyRequest@8
PcCreateContentMixed@12
PcDestroyContent@4
PcDispatchIrp@8
PcForwardContentToDeviceObject@12
PcForwardContentToFileObject@8
PcForwardContentToInterface@12
PcForwardIrpSynchronous@8
PcGetContentRights@8
PcGetDeviceProperty@20
PcGetTimeInterval@8
PcInitializeAdapterDriver@12
PcNewDmaChannel@20
PcNewInterruptSync@20
PcNewMiniport@8
PcNewPort@8
PcNewRegistryKey@36
PcNewResourceList@20
PcNewResourceSublist@20
PcNewServiceGroup@8
PcRegisterAdapterPowerManagement@8
PcRegisterIoTimeout@12
PcRegisterPhysicalConnection@20
PcRegisterPhysicalConnectionFromExternal@20
PcRegisterPhysicalConnectionToExternal@20
PcRegisterSubdevice@12
PcRequestNewPowerState@8
PcUnregisterIoTimeout@12

View file

@ -0,0 +1,252 @@
/*
Move to w32api when it is ready.
*/
#ifndef _PORTCLS_H
#define _PORTCLS_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#include <windef.h>
#include <ddk/ntddk.h>
#define PORTCLASSAPI extern
PORTCLASSAPI NTSTATUS STDCALL
PcAddAdapterDevice(
DWORD DriverObject,
DWORD PhysicalDeviceObject,
DWORD StartDevice,
DWORD MaxObjects,
DWORD DeviceExtensionSize
);
PORTCLASSAPI NTSTATUS STDCALL
PcAddContentHandlers(
DWORD ContentId,
DWORD paHandlers,
DWORD NumHandlers
);
PORTCLASSAPI NTSTATUS STDCALL
PcCompleteIrp(
DWORD DeviceObject,
DWORD Irp,
DWORD Status
);
PORTCLASSAPI NTSTATUS STDCALL
PcCompletePendingPropertyRequest(
DWORD PropertyRequest,
DWORD NtStatus
);
PORTCLASSAPI NTSTATUS STDCALL
PcCreateContentMixed(
DWORD paContentId,
DWORD cContentId,
DWORD pMixedContentId
);
PORTCLASSAPI NTSTATUS STDCALL
PcDestroyContent(
DWORD ContentId
);
PORTCLASSAPI NTSTATUS STDCALL
PcDispatchIrp(
DWORD DeviceObject,
DWORD Irp
);
PORTCLASSAPI NTSTATUS STDCALL
PcForwardContentToDeviceObject(
DWORD ContentId,
DWORD Reserved,
DWORD DrmForward
);
PORTCLASSAPI NTSTATUS STDCALL
PcForwardContentToFileObject(
DWORD ContentId,
DWORD FileObject
);
PORTCLASSAPI NTSTATUS STDCALL
PcForwardContentToInterface(
DWORD ContentId,
DWORD Unknown,
DWORD NumMethods
);
PORTCLASSAPI NTSTATUS STDCALL
PcForwardIrpSynchronous(
DWORD DeviceObject,
DWORD Irp
);
PORTCLASSAPI NTSTATUS STDCALL
PcGetContentRights(
DWORD ContentId,
DWORD DrmRights
);
PORTCLASSAPI NTSTATUS STDCALL
PcGetDeviceProperty(
DWORD DeviceObject,
DWORD DeviceProperty,
DWORD BufferLength,
DWORD PropertyBuffer,
DWORD ResultLength
);
PORTCLASSAPI ULONGLONG STDCALL
PcGetTimeInterval(
ULONGLONG Timei
);
PORTCLASSAPI NTSTATUS STDCALL
PcInitializeAdapterDriver(
DWORD DriverObject,
DWORD RegistryPathName,
DWORD AddDevice
);
PORTCLASSAPI NTSTATUS STDCALL
PcNewDmaChannel(
DWORD OutDmaChannel,
DWORD Unknown,
DWORD PoolType,
DWORD DeviceDescription,
DWORD DeviceObject
);
PORTCLASSAPI NTSTATUS STDCALL
PcNewInterruptSync(
DWORD OutInterruptSync,
DWORD Unknown,
DWORD ResourceList,
DWORD ResourceIndex,
DWORD Mode
);
PORTCLASSAPI NTSTATUS STDCALL
PcNewMiniport(
DWORD OutMiniport,
DWORD ClassId
);
PORTCLASSAPI NTSTATUS STDCALL
PcNewPort(
DWORD OutPort,
DWORD ClassId
);
PORTCLASSAPI NTSTATUS STDCALL
PcNewRegistryKey(
DWORD OutRegistryKey,
DWORD Unknown,
DWORD RegistryKeyType,
DWORD DesiredAccess,
DWORD DeviceObject,
DWORD SubDevice,
DWORD ObjectAttributes,
DWORD CreateOptions,
DWORD Disposition
);
PORTCLASSAPI NTSTATUS STDCALL
PcNewResourceList(
DWORD OutResourceList,
DWORD Unknown,
DWORD PoolType,
DWORD TranslatedResources,
DWORD UntranslatedResources
);
PORTCLASSAPI NTSTATUS STDCALL
PcNewResourceSublist(
DWORD OutResourceList,
DWORD Unknown,
DWORD PoolType,
DWORD ParentList,
DWORD MaximumEntries
);
PORTCLASSAPI NTSTATUS STDCALL
PcNewServiceGroup(
DWORD OutServiceGroup,
DWORD Unknown
);
PORTCLASSAPI NTSTATUS STDCALL
PcRegisterAdapterPowerManagement(
DWORD Unknown,
DWORD pvContext
);
PORTCLASSAPI NTSTATUS STDCALL
PcRegisterIoTimeout(
DWORD pDeviceObject,
DWORD pTimerRoutine,
DWORD pContext
);
PORTCLASSAPI NTSTATUS STDCALL
PcRegisterPhysicalConnection(
DWORD DeviceObject,
DWORD FromUnknown,
DWORD FromPin,
DWORD ToUnknown,
DWORD ToPin
);
PORTCLASSAPI NTSTATUS STDCALL
PcRegisterPhysicalConnectionFromExternal(
DWORD DeviceObject,
DWORD FromString,
DWORD FromPin,
DWORD ToUnknown,
DWORD ToPin
);
PORTCLASSAPI NTSTATUS STDCALL
PcRegisterPhysicalConnectionToExternal(
DWORD DeviceObject,
DWORD FromUnknown,
DWORD FromPin,
DWORD ToString,
DWORD ToPin
);
PORTCLASSAPI NTSTATUS STDCALL
PcRegisterSubdevice(
DWORD DeviceObject,
DWORD SubdevName,
DWORD Unknown
);
PORTCLASSAPI NTSTATUS STDCALL
PcRequestNewPowerState(
DWORD pDeviceObject,
DWORD RequestedNewState
);
PORTCLASSAPI NTSTATUS STDCALL
PcUnregisterIoTimeout(
DWORD pDeviceObject,
DWORD pTimerRoutine,
DWORD pContext
);
#ifdef __cplusplus
}
#endif
#endif

View file

@ -0,0 +1,5 @@
#define REACTOS_VERSION_DLL
#define REACTOS_STR_FILE_DESCRIPTION "PORTCLS Port Class Driver API\0"
#define REACTOS_STR_INTERNAL_NAME "portcls\0"
#define REACTOS_STR_ORIGINAL_FILENAME "portcls.sys\0"
#include <reactos/version.rc>

View file

@ -0,0 +1,8 @@
<module name="portcls" type="kernelmodedriver" installbase="system32/drivers" installname="portcls.sys">
<importlibrary definition="portcls.def" />
<define name="__USE_W32API" />
<library>ntoskrnl</library>
<library>hal</library>
<file>portcls.c</file>
<file>portcls.rc</file>
</module>