Further stubbing of Kernel Streaming APIs:

KS.SYS PORTCLS.SYS


svn path=/trunk/; revision=25114
This commit is contained in:
Andrew Greenwood 2006-12-10 15:09:46 +00:00
parent 0fe6b951ac
commit c7765a6c6c
14 changed files with 577 additions and 3917 deletions

View file

@ -8,9 +8,6 @@
This is mostly incomplete at the moment.
-->
<!--directory name="wdmaud">
<xi:include href="wdmaud/wdmaud.rbuild" />
</directory-->
<directory name="ks">
<xi:include href="ks/ks.rbuild" />
</directory>

View file

@ -1,73 +0,0 @@
/*
ReactOS Kernel Streaming
Digital Rights Management
Author: Andrew Greenwood
*/
#ifndef DRMK_H
#define DRMK_H
#include <haxor.h>
typedef struct
{
DWORD Flags;
PDEVICE_OBJECT DeviceObject;
PFILE_OBJECT FileObject;
PVOID Context;
} DRMFORWARD, *PDRMFORWARD, *PCDRMFORWARD;
typedef struct
{
BOOL CopyProtect;
ULONG Reserved;
BOOL DigitalOutputDisable;
} DRMRIGHTS, *PDRMRIGHTS;
/* ===============================================================
Digital Rights Management Functions
TODO: Check calling convention
*/
NTSTATUS
DrmAddContentHandlers(
IN ULONG ContentId,
IN PVOID *paHandlers,
IN ULONG NumHandlers);
NTSTATUS
DrmCreateContentMixed(
IN PULONG paContentId,
IN ULONG cContentId,
OUT PULONG pMixedContentId);
NTSTATUS
DrmDestroyContent(
IN ULONG ContentId);
NTSTATUS
DrmForwardContentToDeviceObject(
IN ULONG ContentId,
IN PVOID Reserved,
IN PCDRMFORWARD DrmForward);
NTSTATUS
DrmForwardContentToFileObject(
IN ULONG ContentId,
IN PFILE_OBJECT FileObject);
NTSTATUS
DrmForwardContentToInterface(
IN ULONG ContentId,
IN PUNKNOWN pUnknown,
IN ULONG NumMethods);
NTSTATUS
DrmGetContentRights(
IN ULONG ContentId,
OUT PDRMRIGHTS DrmRights);
#endif

File diff suppressed because it is too large Load diff

View file

@ -1,597 +0,0 @@
/*
ReactOS Kernel Streaming
Port Class
Andrew Greenwood
NOTE: Obsolete macros are not implemented. For more info:
http://www.osronline.com/ddkx/stream/audpc-struct_167n.htm
== EXPORTS ==
DRM:
* PcAddContentHandlers
* PcCreateContentMixed
* PcDestroyContent
* PcForwardContentToDeviceObject
* PcForwardContentToFileObject
* PcForwardContentToInterface
* PcGetContentRights
IRP HANDLING:
* PcCompleteIrp
* PcDispatchIrp
* PcForwardIrpSynchronous
ADAPTER:
* PcAddAdapterDevice
* PcInitializeAdapterDriver
FACTORIES:
* PcNewDmaChannel
* PcNewInterruptSync
* PcNewMiniport
* PcNewPort
* PcNewRegistryKey
* PcNewResourceList
* PcNewResourceSublist
* PcNewServiceGroup
POWER MANAGEMENT:
* PcRegisterAdapterPowerManagement
* PcRequestNewPowerState
PROPERTIES:
* PcCompletePendingPropertyRequest
* PcGetDeviceProperty
IO TIMEOUTS:
* PcRegisterIoTimeout
* PcUnregisterIoTimeout
PHYSICAL CONNECTIONS:
* PcRegisterPhysicalConnection
* PcRegisterPhysicalConnectionFromExternal
* PcRegisterPhysicalConnectionToExternal
MISC:
* PcGetTimeInterval
* PcRegisterSubdevice
== INTERFACES ==
IDmaChannel
IDmaChannelSlave
IDmaOperations
IDrmPort
IDrmPort2
IInterruptSync
IMasterClock
IPortClsVersion
IPortEvents
IPreFetchOffset
IRegistryKey
IResourceList
IServiceGroup
IServiceSink
== AUDIO PORT OBJECT INTERFACES ==
IPort
IPortDMus
IPortMidi
IPortTopology
IPortWaveCyclic
IPortWavePci
== AUDIO MINIPORT OBJECT INTERFACES ==
IMiniport
IMiniportDMus
IMiniportMidi
IMiniportTopology
IMiniportWaveCyclic
IMiniportWavePci
== AUDIO MINIPORT AUXILIARY INTERFACES ==
IMusicTechnology
IPinCount
== AUDIO STREAM OBJECT INTERFACES ==
IAllocatorMXF
IDrmAudioStream
IMiniportMidiStream
IMiniportWaveCyclicStream
IMiniportWavePciStream
IMXF
IPortWavePciStream
ISynthSinkDMus
== DIRECTMUSIC USERMODE SYNTH AND SYNTH SINK INTERFACES ==
IDirectMusicSynth
IDirectMusicSynthSink
== AUDIO POWER MANAGEMENT INTERFACES ==
IAdapterPowerManagement
IPowerNotify
*/
#ifndef PORTCLS_H
#define PORTCLS_H
#include <haxor.h>
#include <ks.h>
#include <drmk.h>
/* TODO */
#define PORTCLASSAPI
const ULONG PCFILTER_NODE = ((ULONG) -1);
/* ===============================================================
Class IDs - TODO
*/
//#define CLSID_PortDMus /* dmusicks.h */
#define CLSID_PortMidi
#define CLSID_PortTopology
#define CLSID_PortWaveCyclic
#define CLSID_PortWavePci
/* first 2 are dmusicks.h */
#define CLSID_MiniportDriverDMusUART
#define CLSID_MiniportDriverDMusUARTCapture
#define CLSID_MiniportDriverFmSynth
#define CLSID_MiniportDriverFmSynthWithVol
#define CLSID_MiniportDriverUart
/* ===============================================================
Property Item Flags - TODO
*/
#define PCPROPERTY_ITEM_FLAG_GET
#define PCPROPERTY_ITEM_FLAG_SET
#define PCPROPERTY_ITEM_FLAG_DEFAULTVALUES
#define PCPROPERTY_ITEM_FLAG_BASICSUPPORT
#define PCPROPERTY_ITEM_FLAG_SERIALIZESIZE
#define PCPROPERTY_ITEM_FLAG_SERIALIZERAW
#define PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW
#define PCPROPERTY_ITEM_FLAG_SERIALIZE
/* ===============================================================
Event Item Flags - TODO
*/
#define PCEVENT_ITEM_FLAG_ENABLE
#define PCEVENT_ITEM_FLAG_ONESHOT
#define PCEVENT_ITEM_FLAG_BASICSUPPORT
/* ===============================================================
Event Verbs - TODO
*/
#define PCEVENT_VERB_ADD
#define PCEVENT_VERB_REMOVE
#define PCEVENT_VERB_SUPPORT
#define PCEVENT_VERB_NONE
/* ===============================================================
Method Item Flags - TODO
*/
#define PCMETHOD_ITEM_FLAG_MODIFY
#define PCMETHOD_ITEM_FLAG_NONE
#define PCMETHOD_ITEM_FLAG_READ
#define PCMETHOD_ITEM_FLAG_SOURCE
#define PCMETHOD_ITEM_FLAG_WRITE
/* ===============================================================
Method Verbs - TODO
*/
#define PCMETHOD_ITEM_FLAG_BASICSUPPORT
#define PCMETHOD_ITEM_FLAG_SEND
#define PCMETHOD_ITEM_FLAG_SETSUPPORT
/* ===============================================================
Callback Functions
*/
struct _PCPROPERTY_REQUEST;
typedef NTSTATUS (*PCPFNPROPERTY_HANDLER)(
IN struct _PCPROPERTY_REQUEST* PropertyRequest);
typedef struct _PCPROPERTY_ITEM
{
const GUID* Set;
ULONG Id;
ULONG Flags;
PCPFNPROPERTY_HANDLER Handler;
} PCPROPERTY_ITEM, *PPCPROPERTY_ITEM;
typedef struct _PCPROPERTY_REQUEST
{
PUNKNOWN MajorTarget;
PUNKNOWN MinorTarget;
ULONG Node;
const PCPROPERTY_ITEM* PropertyItem;
ULONG Verb;
ULONG InstanceSize;
PVOID Instance;
ULONG ValueSize;
PVOID Value;
PIRP Irp;
} PCPROPERTY_REQUEST, *PPCPROPERTY_REQUEST;
struct _PCEVENT_REQUEST;
typedef NTSTATUS (*PCPFNEVENT_HANDLER)(
IN struct _PCEVENT_REQUEST* EventRequest);
typedef struct _PCEVENT_ITEM
{
const GUID* Set;
ULONG Id;
ULONG Flags;
PCPFNEVENT_HANDLER Handler;
} PCEVENT_ITEM, *PPCEVENT_ITEM;
typedef struct _PCEVENT_REQUEST
{
PUNKNOWN MajorTarget;
PUNKNOWN MinorTarget;
ULONG Node;
const PCEVENT_ITEM* EventItem;
PKSEVENT_ENTRY EventEntry;
ULONG Verb;
PIRP Irp;
} PCEVENT_REQUEST, *PPCEVENT_REQUEST;
struct _PCMETHOD_REQUEST;
typedef NTSTATUS (*PCPFNMETHOD_HANDLER)(
IN struct _PCMETHOD_REQUEST* MethodRequest);
typedef struct _PCMETHOD_ITEM
{
const GUID* Set;
ULONG Id;
ULONG Flags;
PCPFNMETHOD_HANDLER Handler;
} PCMETHOD_ITEM, *PPCMETHOD_ITEM;
typedef struct _PCMETHOD_REQUEST
{
PUNKNOWN MajorTarget;
PUNKNOWN MinorTarget;
ULONG Node;
const PCMETHOD_ITEM* MethodItem;
ULONG Verb;
} PCMETHOD_REQUEST, *PPCMETHOD_REQUEST;
/* ===============================================================
Structures (unsorted)
*/
typedef struct
{
ULONG PropertyItemSize;
ULONG PropertyCount;
const PCPROPERTY_ITEM* Properties;
ULONG MethodItemSize;
ULONG MethodCount;
const PCMETHOD_ITEM* Methods;
ULONG EventItemSize;
ULONG EventCount;
const PCEVENT_ITEM* Events;
ULONG Reserved;
} PCAUTOMATION_TABLE, *PPCAUTOMATION_TABLE;
typedef struct
{
ULONG FromNode;
ULONG FromNodePin;
ULONG ToNode;
ULONG ToNodePin;
} PCCONNECTION_DESCRIPTOR, *PPCCONNECTIONDESCRIPTOR;
typedef struct
{
ULONG MaxGlobalInstanceCount;
ULONG MaxFilterInstanceCount;
ULONG MinFilterInstanceCount;
const PCAUTOMATION_TABLE* AutomationTable;
KSPIN_DESCRIPTOR KsPinDescriptor;
} PCPIN_DESCRIPTOR, *PPCPIN_DESCRIPTOR;
typedef struct
{
ULONG Flags;
const PCAUTOMATION_TABLE* AutomationTable;
const GUID* Type;
const GUID* Name;
} PCNODE_DESCRIPTOR, *PPCNODE_DESCRIPTOR;
typedef struct
{
ULONG Version;
const PCAUTOMATION_TABLE* AutomationTable;
ULONG PinSize;
ULONG PinCount;
const PCPIN_DESCRIPTOR* Pins;
ULONG NodeSize;
ULONG NodeCount;
const PCNODE_DESCRIPTOR* Nodes;
ULONG ConnectionCount;
const PCCONNECTION_DESCRIPTOR* Connections;
ULONG CategoryCount;
const GUID* Categories;
} PCFILTER_DESCRIPTOR, *PPCFILTER_DESCRIPTOR;
/* ===============================================================
IPort Interface
*/
typedef struct
{
/* TODO */
} IPort;
/* ===============================================================
PortCls API Functions
*/
typedef NTSTATUS (*PCPFNSTARTDEVICE)(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PRESOURCELIST ResourceList);
/* This should be in NTDDK.H */
typedef NTSTATUS (*PDRIVER_ADD_DEVICE)(
IN struct _DRIVER_OBJECT* DriverObject,
IN struct _DEVICE_OBJECT* PhysicalDeviceObject);
PORTCLASSAPI NTSTATUS NTAPI
PcAddAdapterDevice(
IN PDRIVER_OBJECT DriverObject,
IN PDEVICE_OBJECT PhysicalDeviceObject,
IN PCPFNSTARTDEVICE StartDevice,
IN ULONG MaxObjects,
IN ULONG DeviceExtensionSize);
PORTCLASSAPI NTSTATUS NTAPI
PcInitializeAdapterDriver(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPathName,
IN PDRIVER_ADD_DEVICE AddDevice);
/* ===============================================================
Factories (TODO: Move elsewhere)
*/
PORTCLASSAPI NTSTATUS NTAPI
PcNewDmaChannel(
OUT PDMACHANNEL* OutDmaChannel,
IN PUNKNOWN OuterUnknown OPTIONAL,
IN POOL_TYPE PoolType,
IN PDEVICE_DESCRIPTION DeviceDescription,
IN PDEVICE_OBJECT DeviceObject);
PORTCLASSAPI NTSTATUS NTAPI
PcNewInterruptSync(
OUT PINTERRUPTSYNC* OUtInterruptSync,
IN PUNKNOWN OuterUnknown OPTIONAL,
IN PRESOURCELIST ResourceList,
IN ULONG ResourceIndex,
IN INTERRUPTSYNCMODE Mode);
PORTCLASSAPI NTSTATUS NTAPI
PcNewMiniport(
OUT PMINIPORT* OutMiniport,
IN REFCLSID ClassId);
PORTCLASSAPI NTSTATUS NTAPI
PcNewPort(
OUT PPORT* OutPort,
IN REFCLSID ClassId);
PORTCLASSAPI NTSTATUS NTAPI
PcNewRegistryKey(
OUT PREGISTRYKEY* OutRegistryKey,
IN PUNKNOWN OuterUnknown OPTIONAL,
IN ULONG RegistryKeyType,
IN ACCESS_MASK DesiredAccess,
IN PVOID DeviceObject OPTIONAL,
IN PVOID SubDevice OPTIONAL,
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN ULONG CreateOptions OPTIONAL,
OUT PULONG Disposition OPTIONAL);
PORTCLASSAPI NTSTATUS NTAPI
PcNewResourceList(
OUT PRESOURCELIST* OutResourceList,
IN PUNKNOWN OuterUnknown OPTIONAL,
IN POOL_TYPE PoolType,
IN PCM_RESOURCE_LIST TranslatedResources,
IN PCM_RESOURCE_LIST UntranslatedResources);
PORTCLASSAPI NTSTATUS NTAPI
PcNewResourceSublist(
OUT PRESOURCELIST* OutResourceList,
IN PUNKNOWN OuterUnknown OPTIONAL,
IN POOL_TYPE PoolType,
IN PRESOURCELIST ParentList,
IN ULONG MaximumEntries);
PORTCLASSAPI NTSTATUS NTAPI
PcNewServiceGroup(
OUT PSERVICEGROUP* OutServiceGroup,
IN PUNKNOWN OuterUnknown OPTIONAL);
/* ===============================================================
IRP Handling
*/
PORTCLASSAPI NTSTATUS NTAPI
PcDispatchirp(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
PORTCLASSAPI NTSTATUS NTAPI
PcCompleteIrp(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN NTSTATUS Status);
PORTCLASSAPI NTSTATUS NTAPI
PcForwardIrpSynchronous(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
/* ===============================================================
Power Management
*/
PORTCLASSAPI NTSTATUS NTAPI
PcRegisterAdapterPowerManagement(
IN PUNKNOWN pUnknown,
IN PVOID pvContext1);
PORTCLASSAPI NTSTATUS NTAPI
IN PDEVICE_OBJECT pDeviceObject,
IN DEVICE_POWER_STATE RequestedNewState);
/* ===============================================================
Properties
*/
PORTCLASSAPI NTSTATUS NTAPI
PcGetDeviceProperty(
IN PVOID DeviceObject,
IN DEVICE_REGISTRY_PROPERTY DeviceProperty,
IN ULONG BufferLength,
OUT PVOID PropertyBuffer,
OUT PULONG ResultLength);
PORTCLASSAPI NTSTATUS NTAPI
PcCompletePendingPropertyRequest(
IN PPCPROPERTY_REQUEST PropertyRequest,
IN NTSTATUS NtStatus);
/* ===============================================================
I/O Timeouts
*/
PORTCLASSAPI NTSTATUS NTAPI
PcRegisterIoTimeout(
IN PDEVICE_OBJECT pDeviceObject,
IN PIO_TIMER_ROUTINE pTimerRoutine,
IN PVOID pContext);
PORTCLASSAPI NTSTATUS NTAPI
PcUnregisterIoTimeout(
IN PDEVICE_OBJECT pDeviceObject,
IN PIO_TIMER_ROUTINE pTimerRoutine,
IN PVOID pContext);
/* ===============================================================
Physical Connections
*/
PORTCLASSAPI NTSTATUS NTAPI
PcRegisterPhysicalConnection(
IN PDEVICE_OBJECT DeviceObject,
IN PUNKNOWN FromUnknown,
IN ULONG FromPin,
IN PUNKNOWN ToUnknown,
IN ULONG ToPin);
PORTCLASSAPI NTSTATUS NTAPI
PcRegisterPhysicalConnectionFromExternal(
IN PDEVICE_OBJECT DeviceObject,
IN PUNICODE_STRING FromString,
IN ULONG FromPin,
IN PUNKNOWN ToUnknown,
IN ULONG ToPin);
PORTCLASSAPI NTSTATUS NTAPI
PcRegisterPhysicalConnectionToExternal(
IN PDEVICE_OBJECT DeviceObject,
IN PUNKNOWN FromUnknown,
IN ULONG FromPin,
IN PUNICODE_STRING ToString,
IN ULONG ToPin);
/* ===============================================================
Misc
*/
PORTCLASSAPI ULONGLONG NTAPI
PcGetTimeInterval(
IN ULONGLONG Since);
PORTCLASSAPI NTSTATUS NTAPI
PcRegisterSubdevice(
IN PDEVICE_OBJECT DeviceObject,
IN PWCHAR Name,
IN PUNKNOWN Unknown);
/* ===============================================================
Digital Rights Management Functions
*/
PORTCLASSAPI NTSTATUS NTAPI
PcAddContentHandlers(
IN ULONG ContentId,
IN PVOID *paHandlers,
IN ULONG NumHandlers);
PORTCLASSAPI NTSTATUS NTAPI
PcCreateContentMixed(
IN PULONG paContentId,
IN ULONG cContentId,
OUT PULONG pMixedContentId);
PORTCLASSAPI NTSTATUS NTAPI
PcDestroyContent(
IN ULONG ContentId);
PORTCLASSAPI NTSTATUS NTAPI
PcForwardContentToDeviceObject(
IN ULONG ContentId,
IN PVOID Reserved,
IN PCDRMFORWARD DrmForward);
PORTCLASSAPI NTSTATUS NTAPI
PcForwardContentToFileObject(
IN ULONG ContentId,
IN PFILE_OBJECT FileObject);
PORTCLASSAPI NTSTATUS NTAPI
PcForwardContentToInterface(
IN ULONG ContentId,
IN PUNKNOWN pUnknown,
IN ULONG NumMethods);
PORTCLASSAPI NTSTATUS NTAPI
PcGetContentRights(
IN ULONG ContentId,
OUT PDRMRIGHTS DrmRights);
#endif

View file

@ -6,6 +6,7 @@
<library>ntoskrnl</library>
<define name="__USE_W32API" />
<define name="BUILDING_KS" />
<file>ks.rc</file>
<file>allocators.c</file>
<file>clocks.c</file>
<file>connectivity.c</file>

View file

@ -0,0 +1,5 @@
#define REACTOS_VERSION_DLL
#define REACTOS_STR_FILE_DESCRIPTION "Kernel Streaming API\0"
#define REACTOS_STR_INTERNAL_NAME "ks\0"
#define REACTOS_STR_ORIGINAL_FILENAME "ks.sys\0"
#include <reactos/version.rc>

View file

@ -0,0 +1,87 @@
/*
ReactOS Kernel Streaming
Port Class API: Adapter initialization
Author: Andrew Greenwood
*/
#include <portcls.h>
NTSTATUS
PcStartIo(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
/* Internal function */
return STATUS_UNSUCCESSFUL;
}
NTSTATUS
PcUnload(
IN PDRIVER_OBJECT DriverObject)
{
/* Internal function */
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcInitializeAdapterDriver(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPathName,
IN PDRIVER_ADD_DEVICE AddDevice)
{
/*
This is effectively a common DriverEntry function for PortCls drivers.
So it has similar responsibilities to a normal driver.
First 2 parameters are from DriverEntry.
Installs the supplied AddDevice routine in the driver object?s driver extension and installs the PortCls driver?s IRP handlers in the driver object itself.
*/
DriverObject->DriverExtension->AddDevice = AddDevice;
/*
TODO: (* = implement here, otherwise KS default)
IRP_MJ_CLOSE
* IRP_MJ_CREATE
IRP_MJ_DEVICE_CONTROL
IRP_MJ_FLUSH_BUFFERS
* IRP_MJ_PNP
* IRP_MJ_POWER
IRP_MJ_QUERY_SECURITY
IRP_MJ_READ
IRP_MJ_SET_SECURITY
* IRP_MJ_SYSTEM_CONTROL
IRP_MJ_WRITE
*/
UNIMPLEMENTED;
return STATUS_SUCCESS;
}
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcAddAdapterDevice(
IN PDRIVER_OBJECT DriverObject,
IN PDEVICE_OBJECT PhysicalDeviceObject,
IN PCPFNSTARTDEVICE StartDevice,
IN ULONG MaxObjects,
IN ULONG DeviceExtensionSize)
{
/*
Note - after this has been called, we can
handle IRP_MN_START_DEVICE by calling StartDevice
*/
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}

View file

@ -0,0 +1,29 @@
/*
ReactOS Kernel Streaming
Port Class / Library Init and Cleanup
Author: Andrew Greenwood
Notes:
-
*/
#include <ntddk.h>
/*
* @implemented
*/
ULONG STDCALL
DllInitialize(ULONG Unknown)
{
return 0;
}
/*
* @implemented
*/
ULONG STDCALL
DllUnload(VOID)
{
return 0;
}

View file

@ -0,0 +1,73 @@
/*
ReactOS Kernel Streaming
Port Class / Digital Rights Management
Author: Andrew Greenwood
Notes:
These are convenience functions for accessing DRM facilities, as
documented here:
http://www.osronline.com/ddkx/stream/aud-prop_9f77.htm
*/
#include <portcls.h>
#include <drmk.h>
PORTCLASSAPI NTSTATUS NTAPI
PcAddContentHandlers(
IN ULONG ContentId,
IN PVOID *paHandlers,
IN ULONG NumHandlers)
{
return DrmAddContentHandlers(ContentId, paHandlers, NumHandlers);
}
PORTCLASSAPI NTSTATUS NTAPI
PcCreateContentMixed(
IN PULONG paContentId,
IN ULONG cContentId,
OUT PULONG pMixedContentId)
{
return DrmCreateContentMixed(paContentId, cContentId, pMixedContentId);
}
PORTCLASSAPI NTSTATUS NTAPI
PcDestroyContent(
IN ULONG ContentId)
{
return DrmDestroyContent(ContentId);
}
PORTCLASSAPI NTSTATUS NTAPI
PcForwardContentToDeviceObject(
IN ULONG ContentId,
IN PVOID Reserved,
IN PCDRMFORWARD DrmForward)
{
return DrmForwardContentToDeviceObject(ContentId, Reserved, DrmForward);
}
PORTCLASSAPI NTSTATUS NTAPI
PcForwardContentToFileObject(
IN ULONG ContentId,
IN PFILE_OBJECT FileObject)
{
return DrmForwardContentToFileObject(ContentId, FileObject);
}
PORTCLASSAPI NTSTATUS NTAPI
PcForwardContentToInterface(
IN ULONG ContentId,
IN PUNKNOWN pUnknown,
IN ULONG NumMethods)
{
return DrmForwardContentToInterface(ContentId, pUnknown, NumMethods);
}
PORTCLASSAPI NTSTATUS NTAPI
PcGetContentRights(
IN ULONG ContentId,
OUT PDRMRIGHTS DrmRights)
{
return DrmGetContentRights(ContentId, DrmRights);
}

View file

@ -1,489 +0,0 @@
/*
* PROJECT: ReactOS Sound System
* LICENSE: GPL - See COPYING in the top level directory
* FILE: drivers/multimedia/portcls/portcls.c
* PURPOSE: Audio Port Class Functions
* PROGRAMMERS:
*
*/
#include "portcls.h"
#define NDEBUG
#include <debug.h>
NTSTATUS STDCALL
DriverEntry(PDRIVER_OBJECT DriverObject,
PUNICODE_STRING RegistryPath)
{
return STATUS_SUCCESS;
}
/*
* @implemented
*/
ULONG STDCALL
DllInitialize(ULONG Unknown)
{
return 0;
}
/*
* @implemented
*/
ULONG STDCALL
DllUnload(VOID)
{
return 0;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcAddAdapterDevice(
ULONG DriverObject,
ULONG PhysicalDeviceObject,
ULONG StartDevice,
ULONG MaxObjects,
ULONG DeviceExtensionSize
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcAddContentHandlers(
ULONG ContentId,
ULONG paHandlers,
ULONG NumHandlers
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcCompleteIrp(
ULONG DeviceObject,
ULONG Irp,
ULONG Status
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcCompletePendingPropertyRequest(
ULONG PropertyRequest,
ULONG NtStatus
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcCreateContentMixed(
ULONG paContentId,
ULONG cContentId,
ULONG pMixedContentId
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcDestroyContent(
ULONG ContentId
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcDispatchIrp(
ULONG DeviceObject,
ULONG Irp
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcForwardContentToDeviceObject(
ULONG ContentId,
ULONG Reserved,
ULONG DrmForward
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcForwardContentToFileObject(
ULONG ContentId,
ULONG FileObject
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcForwardContentToInterface(
ULONG ContentId,
ULONG Unknown,
ULONG NumMethods
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcForwardIrpSynchronous(
ULONG DeviceObject,
ULONG Irp
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcGetContentRights(
ULONG ContentId,
ULONG DrmRights
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcGetDeviceProperty(
ULONG DeviceObject,
ULONG DeviceProperty,
ULONG BufferLength,
ULONG PropertyBuffer,
ULONG ResultLength
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @implemented
*/
ULONGLONG STDCALL
PcGetTimeInterval(
ULONGLONG Timei
)
{
LARGE_INTEGER CurrentTime;
KeQuerySystemTime( &CurrentTime);
return (Timei - CurrentTime.QuadPart);
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcInitializeAdapterDriver(
ULONG DriverObject,
ULONG RegistryPathName,
ULONG AddDevice
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcNewDmaChannel(
ULONG OutDmaChannel,
ULONG Unknown,
ULONG PoolType,
ULONG DeviceDescription,
ULONG DeviceObject
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcNewInterruptSync(
ULONG OutInterruptSync,
ULONG Unknown,
ULONG ResourceList,
ULONG ResourceIndex,
ULONG Mode
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcNewMiniport(
ULONG OutMiniport,
ULONG ClassId
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcNewPort(
ULONG OutPort,
ULONG ClassId
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcNewRegistryKey(
ULONG OutRegistryKey,
ULONG Unknown,
ULONG RegistryKeyType,
ULONG DesiredAccess,
ULONG DeviceObject,
ULONG SubDevice,
ULONG ObjectAttributes,
ULONG CreateOptions,
ULONG Disposition
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcNewResourceList(
ULONG OutResourceList,
ULONG Unknown,
ULONG PoolType,
ULONG TranslatedResources,
ULONG UntranslatedResources
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcNewResourceSublist(
ULONG OutResourceList,
ULONG Unknown,
ULONG PoolType,
ULONG ParentList,
ULONG MaximumEntries
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcNewServiceGroup(
ULONG OutServiceGroup,
ULONG Unknown
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcRegisterAdapterPowerManagement(
ULONG Unknown,
ULONG pvContext
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcRegisterIoTimeout(
ULONG pDeviceObject,
ULONG pTimerRoutine,
ULONG pContext
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcRegisterPhysicalConnection(
ULONG DeviceObject,
ULONG FromUnknown,
ULONG FromPin,
ULONG ToUnknown,
ULONG ToPin
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcRegisterPhysicalConnectionFromExternal(
ULONG DeviceObject,
ULONG FromString,
ULONG FromPin,
ULONG ToUnknown,
ULONG ToPin
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcRegisterPhysicalConnectionToExternal(
ULONG DeviceObject,
ULONG FromUnknown,
ULONG FromPin,
ULONG ToString,
ULONG ToPin
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcRegisterSubdevice(
ULONG DeviceObject,
ULONG SubdevName,
ULONG Unknown
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcRequestNewPowerState(
ULONG pDeviceObject,
ULONG RequestedNewState
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS STDCALL
PcUnregisterIoTimeout(
ULONG pDeviceObject,
ULONG pTimerRoutine,
ULONG pContext
)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}

View file

@ -2,21 +2,14 @@
; Exports definition file for portcls.sys
;
EXPORTS
DllInitialize@4
DllUnload@0
; Adapters (adapter.c)
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
; Factories
PcNewDmaChannel@20
PcNewInterruptSync@20
PcNewMiniport@8
@ -25,12 +18,38 @@ PcNewRegistryKey@36
PcNewResourceList@20
PcNewResourceSublist@20
PcNewServiceGroup@8
PcRegisterAdapterPowerManagement@8
PcRegisterIoTimeout@12
; Digital Rights Management (drm.c)
PcAddContentHandlers@12
PcCreateContentMixed@12
PcDestroyContent@4
PcForwardContentToDeviceObject@12
PcForwardContentToFileObject@8
PcForwardContentToInterface@12
PcGetContentRights@8
; IRP Helpers
PcCompleteIrp@12
PcDispatchIrp@8
PcForwardIrpSynchronous@8
; Misc
PcGetTimeInterval@8
PcRegisterSubdevice@12
; Physical Connections
PcRegisterPhysicalConnection@20
PcRegisterPhysicalConnectionFromExternal@20
PcRegisterPhysicalConnectionToExternal@20
PcRegisterSubdevice@12
PcRequestNewPowerState@8
PcUnregisterIoTimeout@12
; Power Management
PcRegisterAdapterPowerManagement@8
PcRequestNewPowerState@8
; Properties
PcCompletePendingPropertyRequest@8
PcGetDeviceProperty@20
; Timeouts
PcRegisterIoTimeout@12
PcUnregisterIoTimeout@12

View file

@ -1,253 +0,0 @@
/*
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
/* This header is total bull**** */
#include <ntddk.h>
#define PORTCLASSAPI extern
PORTCLASSAPI NTSTATUS STDCALL
PcAddAdapterDevice(
ULONG DriverObject,
ULONG PhysicalDeviceObject,
ULONG StartDevice,
ULONG MaxObjects,
ULONG DeviceExtensionSize
);
PORTCLASSAPI NTSTATUS STDCALL
PcAddContentHandlers(
ULONG ContentId,
ULONG paHandlers,
ULONG NumHandlers
);
PORTCLASSAPI NTSTATUS STDCALL
PcCompleteIrp(
ULONG DeviceObject,
ULONG Irp,
ULONG Status
);
PORTCLASSAPI NTSTATUS STDCALL
PcCompletePendingPropertyRequest(
ULONG PropertyRequest,
ULONG NtStatus
);
PORTCLASSAPI NTSTATUS STDCALL
PcCreateContentMixed(
ULONG paContentId,
ULONG cContentId,
ULONG pMixedContentId
);
PORTCLASSAPI NTSTATUS STDCALL
PcDestroyContent(
ULONG ContentId
);
PORTCLASSAPI NTSTATUS STDCALL
PcDispatchIrp(
ULONG DeviceObject,
ULONG Irp
);
PORTCLASSAPI NTSTATUS STDCALL
PcForwardContentToDeviceObject(
ULONG ContentId,
ULONG Reserved,
ULONG DrmForward
);
PORTCLASSAPI NTSTATUS STDCALL
PcForwardContentToFileObject(
ULONG ContentId,
ULONG FileObject
);
PORTCLASSAPI NTSTATUS STDCALL
PcForwardContentToInterface(
ULONG ContentId,
ULONG Unknown,
ULONG NumMethods
);
PORTCLASSAPI NTSTATUS STDCALL
PcForwardIrpSynchronous(
ULONG DeviceObject,
ULONG Irp
);
PORTCLASSAPI NTSTATUS STDCALL
PcGetContentRights(
ULONG ContentId,
ULONG DrmRights
);
PORTCLASSAPI NTSTATUS STDCALL
PcGetDeviceProperty(
ULONG DeviceObject,
ULONG DeviceProperty,
ULONG BufferLength,
ULONG PropertyBuffer,
ULONG ResultLength
);
PORTCLASSAPI ULONGLONG STDCALL
PcGetTimeInterval(
ULONGLONG Timei
);
PORTCLASSAPI NTSTATUS STDCALL
PcInitializeAdapterDriver(
ULONG DriverObject,
ULONG RegistryPathName,
ULONG AddDevice
);
PORTCLASSAPI NTSTATUS STDCALL
PcNewDmaChannel(
ULONG OutDmaChannel,
ULONG Unknown,
ULONG PoolType,
ULONG DeviceDescription,
ULONG DeviceObject
);
PORTCLASSAPI NTSTATUS STDCALL
PcNewInterruptSync(
ULONG OutInterruptSync,
ULONG Unknown,
ULONG ResourceList,
ULONG ResourceIndex,
ULONG Mode
);
PORTCLASSAPI NTSTATUS STDCALL
PcNewMiniport(
ULONG OutMiniport,
ULONG ClassId
);
PORTCLASSAPI NTSTATUS STDCALL
PcNewPort(
ULONG OutPort,
ULONG ClassId
);
PORTCLASSAPI NTSTATUS STDCALL
PcNewRegistryKey(
ULONG OutRegistryKey,
ULONG Unknown,
ULONG RegistryKeyType,
ULONG DesiredAccess,
ULONG DeviceObject,
ULONG SubDevice,
ULONG ObjectAttributes,
ULONG CreateOptions,
ULONG Disposition
);
PORTCLASSAPI NTSTATUS STDCALL
PcNewResourceList(
ULONG OutResourceList,
ULONG Unknown,
ULONG PoolType,
ULONG TranslatedResources,
ULONG UntranslatedResources
);
PORTCLASSAPI NTSTATUS STDCALL
PcNewResourceSublist(
ULONG OutResourceList,
ULONG Unknown,
ULONG PoolType,
ULONG ParentList,
ULONG MaximumEntries
);
PORTCLASSAPI NTSTATUS STDCALL
PcNewServiceGroup(
ULONG OutServiceGroup,
ULONG Unknown
);
PORTCLASSAPI NTSTATUS STDCALL
PcRegisterAdapterPowerManagement(
ULONG Unknown,
ULONG pvContext
);
PORTCLASSAPI NTSTATUS STDCALL
PcRegisterIoTimeout(
ULONG pDeviceObject,
ULONG pTimerRoutine,
ULONG pContext
);
PORTCLASSAPI NTSTATUS STDCALL
PcRegisterPhysicalConnection(
ULONG DeviceObject,
ULONG FromUnknown,
ULONG FromPin,
ULONG ToUnknown,
ULONG ToPin
);
PORTCLASSAPI NTSTATUS STDCALL
PcRegisterPhysicalConnectionFromExternal(
ULONG DeviceObject,
ULONG FromString,
ULONG FromPin,
ULONG ToUnknown,
ULONG ToPin
);
PORTCLASSAPI NTSTATUS STDCALL
PcRegisterPhysicalConnectionToExternal(
ULONG DeviceObject,
ULONG FromUnknown,
ULONG FromPin,
ULONG ToString,
ULONG ToPin
);
PORTCLASSAPI NTSTATUS STDCALL
PcRegisterSubdevice(
ULONG DeviceObject,
ULONG SubdevName,
ULONG Unknown
);
PORTCLASSAPI NTSTATUS STDCALL
PcRequestNewPowerState(
ULONG pDeviceObject,
ULONG RequestedNewState
);
PORTCLASSAPI NTSTATUS STDCALL
PcUnregisterIoTimeout(
ULONG pDeviceObject,
ULONG pTimerRoutine,
ULONG pContext
);
#ifdef __cplusplus
}
#endif
#endif

View file

@ -1,8 +1,12 @@
<module name="portcls" type="exportdriver" installbase="system32/drivers" installname="portcls.sys">
<module name="portcls" type="exportdriver" installbase="system32/drivers" installname="portcls.sys" allowwarnings="true">
<importlibrary definition="portcls.def" />
<define name="__USE_W32API" />
<include base="portcls">../include</include>
<library>ntoskrnl</library>
<library>hal</library>
<file>portcls.c</file>
<library>drmk</library>
<file>dll.c</file>
<file>adapter.c</file>
<file>drm.c</file>
<file>stubs.c</file>
<file>portcls.rc</file>
</module>

View file

@ -0,0 +1,338 @@
/*
Port Class API
Stubbed functions
*/
#include <portcls.h>
/*
Factory Stubs
*/
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcNewDmaChannel(
OUT PDMACHANNEL* OutDmaChannel,
IN PUNKNOWN OuterUnknown OPTIONAL,
IN POOL_TYPE PoolType,
IN PDEVICE_DESCRIPTION DeviceDescription,
IN PDEVICE_OBJECT DeviceObject)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcNewInterruptSync(
OUT PINTERRUPTSYNC* OUtInterruptSync,
IN PUNKNOWN OuterUnknown OPTIONAL,
IN PRESOURCELIST ResourceList,
IN ULONG ResourceIndex,
IN INTERRUPTSYNCMODE Mode)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcNewMiniport(
OUT PMINIPORT* OutMiniport,
IN REFCLSID ClassId)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcNewPort(
OUT PPORT* OutPort,
IN REFCLSID ClassId)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcNewRegistryKey(
OUT PREGISTRYKEY* OutRegistryKey,
IN PUNKNOWN OuterUnknown OPTIONAL,
IN ULONG RegistryKeyType,
IN ACCESS_MASK DesiredAccess,
IN PVOID DeviceObject OPTIONAL,
IN PVOID SubDevice OPTIONAL,
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN ULONG CreateOptions OPTIONAL,
OUT PULONG Disposition OPTIONAL)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcNewResourceList(
OUT PRESOURCELIST* OutResourceList,
IN PUNKNOWN OuterUnknown OPTIONAL,
IN POOL_TYPE PoolType,
IN PCM_RESOURCE_LIST TranslatedResources,
IN PCM_RESOURCE_LIST UntranslatedResources)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcNewResourceSublist(
OUT PRESOURCELIST* OutResourceList,
IN PUNKNOWN OuterUnknown OPTIONAL,
IN POOL_TYPE PoolType,
IN PRESOURCELIST ParentList,
IN ULONG MaximumEntries)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcNewServiceGroup(
OUT PSERVICEGROUP* OutServiceGroup,
IN PUNKNOWN OuterUnknown OPTIONAL)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/* ===============================================================
IRP Handling
*/
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcDispatchIrp(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcCompleteIrp(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN NTSTATUS Status)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcForwardIrpSynchronous(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/* ===============================================================
Power Management
*/
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcRegisterAdapterPowerManagement(
IN PUNKNOWN pUnknown,
IN PVOID pvContext1)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcRequestNewPowerState(
IN PDEVICE_OBJECT pDeviceObject,
IN DEVICE_POWER_STATE RequestedNewState)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/* ===============================================================
Properties
*/
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcGetDeviceProperty(
IN PVOID DeviceObject,
IN DEVICE_REGISTRY_PROPERTY DeviceProperty,
IN ULONG BufferLength,
OUT PVOID PropertyBuffer,
OUT PULONG ResultLength)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcCompletePendingPropertyRequest(
IN PPCPROPERTY_REQUEST PropertyRequest,
IN NTSTATUS NtStatus)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/* ===============================================================
I/O Timeouts
*/
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcRegisterIoTimeout(
IN PDEVICE_OBJECT pDeviceObject,
IN PIO_TIMER_ROUTINE pTimerRoutine,
IN PVOID pContext)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcUnregisterIoTimeout(
IN PDEVICE_OBJECT pDeviceObject,
IN PIO_TIMER_ROUTINE pTimerRoutine,
IN PVOID pContext)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/* ===============================================================
Physical Connections
*/
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcRegisterPhysicalConnection(
IN PDEVICE_OBJECT DeviceObject,
IN PUNKNOWN FromUnknown,
IN ULONG FromPin,
IN PUNKNOWN ToUnknown,
IN ULONG ToPin)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcRegisterPhysicalConnectionFromExternal(
IN PDEVICE_OBJECT DeviceObject,
IN PUNICODE_STRING FromString,
IN ULONG FromPin,
IN PUNKNOWN ToUnknown,
IN ULONG ToPin)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcRegisterPhysicalConnectionToExternal(
IN PDEVICE_OBJECT DeviceObject,
IN PUNKNOWN FromUnknown,
IN ULONG FromPin,
IN PUNICODE_STRING ToString,
IN ULONG ToPin)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/* ===============================================================
Misc
*/
/*
* @unimplemented
*/
PORTCLASSAPI ULONGLONG NTAPI
PcGetTimeInterval(
IN ULONGLONG Since)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
PORTCLASSAPI NTSTATUS NTAPI
PcRegisterSubdevice(
IN PDEVICE_OBJECT DeviceObject,
IN PWCHAR Name,
IN PUNKNOWN Unknown)
{
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}