514 lines
9.6 KiB
C
514 lines
9.6 KiB
C
|
//+-------------------------------------------------------------------------
|
|||
|
//
|
|||
|
// Microsoft Windows
|
|||
|
//
|
|||
|
// Copyright (C) Microsoft Corporation, 1998 - 1999
|
|||
|
//
|
|||
|
// File: proto.h
|
|||
|
//
|
|||
|
//--------------------------------------------------------------------------
|
|||
|
|
|||
|
#ifndef ___REDBOOK_PROTOTYPES_H
|
|||
|
#define ___REDBOOK_PROTOTYPES_H
|
|||
|
|
|||
|
//////////////////////////////////////////////////////////////////////
|
|||
|
//
|
|||
|
// From redbook\pnp.c
|
|||
|
//
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
DriverEntry(
|
|||
|
IN PDRIVER_OBJECT DriverObject,
|
|||
|
IN PUNICODE_STRING RegistryPath
|
|||
|
);
|
|||
|
NTSTATUS
|
|||
|
RedBookAddDevice(
|
|||
|
IN PDRIVER_OBJECT DriverObject,
|
|||
|
IN PDEVICE_OBJECT PhysicalDeviceObject
|
|||
|
);
|
|||
|
NTSTATUS
|
|||
|
RedBookPnp(
|
|||
|
IN PDEVICE_OBJECT DeviceObject,
|
|||
|
IN PIRP Irp
|
|||
|
);
|
|||
|
NTSTATUS
|
|||
|
RedBookPnpRemoveDevice(
|
|||
|
IN PDEVICE_OBJECT DeviceObject,
|
|||
|
IN PIRP Irp
|
|||
|
);
|
|||
|
NTSTATUS
|
|||
|
RedBookPnpStopDevice(
|
|||
|
IN PDEVICE_OBJECT DeviceObject,
|
|||
|
IN PIRP Irp
|
|||
|
);
|
|||
|
NTSTATUS
|
|||
|
RedBookPnpStartDevice(
|
|||
|
IN PDEVICE_OBJECT DeviceObject
|
|||
|
);
|
|||
|
VOID
|
|||
|
RedBookUnload(
|
|||
|
IN PDRIVER_OBJECT DriverObject
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
//////////////////////////////////////////////////////////
|
|||
|
|
|||
|
#if DBG
|
|||
|
|
|||
|
#define VerifyCalledByThread(D) \
|
|||
|
ASSERT(PsGetCurrentThread() == (D)->Thread.SelfPointer)
|
|||
|
|
|||
|
#else // !DBG
|
|||
|
|
|||
|
#define VerifyCalledByThread(D) // Nop
|
|||
|
|
|||
|
#endif // !DBG
|
|||
|
|
|||
|
//////////////////////////////////////////////////////////////////////
|
|||
|
//
|
|||
|
// From redbook\errlog.c
|
|||
|
//
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookLogError(
|
|||
|
IN PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
IN NTSTATUS IoErrorCode,
|
|||
|
IN NTSTATUS FinalStatus
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
//////////////////////////////////////////////////////////////////////
|
|||
|
//
|
|||
|
// From redbook\wmi.c
|
|||
|
//
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookWmiUninit(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookWmiInit(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookWmiQueryDataBlock (
|
|||
|
IN PDEVICE_OBJECT DeviceObject,
|
|||
|
IN PIRP Irp,
|
|||
|
IN ULONG GuidIndex,
|
|||
|
IN ULONG InstanceIndex,
|
|||
|
IN ULONG InstanceCount,
|
|||
|
IN OUT PULONG InstanceLengthArray,
|
|||
|
IN ULONG OutBufferSize,
|
|||
|
OUT PUCHAR Buffer
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookWmiSetDataBlock(
|
|||
|
IN PDEVICE_OBJECT DeviceObject,
|
|||
|
IN PIRP Irp,
|
|||
|
IN ULONG GuidIndex,
|
|||
|
IN ULONG InstanceIndex,
|
|||
|
IN ULONG BufferSize,
|
|||
|
IN PUCHAR Buffer
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookWmiSetDataItem(
|
|||
|
IN PDEVICE_OBJECT DeviceObject,
|
|||
|
IN PIRP Irp,
|
|||
|
IN ULONG GuidIndex,
|
|||
|
IN ULONG InstanceIndex,
|
|||
|
IN ULONG DataItemId,
|
|||
|
IN ULONG BufferSize,
|
|||
|
IN PUCHAR Buffer
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookWmiSystemControl(
|
|||
|
IN PDEVICE_OBJECT DeviceObject,
|
|||
|
IN PIRP Irp
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookThreadWmiHandler(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
PLIST_ENTRY ListEntry
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookWmiQueryRegInfo(
|
|||
|
IN PDEVICE_OBJECT DeviceObject,
|
|||
|
OUT PULONG RegFlags,
|
|||
|
OUT PUNICODE_STRING InstanceName,
|
|||
|
OUT PUNICODE_STRING *RegistryPath,
|
|||
|
OUT PUNICODE_STRING MofResourceName,
|
|||
|
OUT PDEVICE_OBJECT *PhysicalDeviceObject
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookWmiCopyPerfInfo(
|
|||
|
IN PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
OUT PREDBOOK_WMI_PERF_DATA Out
|
|||
|
);
|
|||
|
|
|||
|
//////////////////////////////////////////////////////////////////////
|
|||
|
//
|
|||
|
// From redbook\sysaudio.c
|
|||
|
//
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
OpenSysAudio(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
CloseSysAudio(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
GetPinProperty(
|
|||
|
IN PFILE_OBJECT FileObject,
|
|||
|
IN ULONG PropertyId,
|
|||
|
IN ULONG PinId,
|
|||
|
IN ULONG PropertySize,
|
|||
|
OUT PVOID Property
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
GetVolumeNodeId(
|
|||
|
IN PFILE_OBJECT FileObject,
|
|||
|
OUT PULONG VolumeNodeId
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
UninitializeVirtualSource(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
InitializeVirtualSource(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
AttachVirtualSource(
|
|||
|
IN PFILE_OBJECT FileObject,
|
|||
|
IN ULONG MixerPinId
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
SetNextDeviceState(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
KSSTATE State
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookKsSetVolume(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
OpenInterfaceByGuid(
|
|||
|
IN CONST GUID * InterfaceClassGuid,
|
|||
|
OUT HANDLE * Handle,
|
|||
|
OUT PFILE_OBJECT * FileObject
|
|||
|
);
|
|||
|
|
|||
|
//////////////////////////////////////////////////////////////////////
|
|||
|
//
|
|||
|
// From redbook\redbook.c
|
|||
|
//
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookRegistryRead(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookRegistryWrite(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookReadWrite(
|
|||
|
PDEVICE_OBJECT DeviceObject,
|
|||
|
PIRP Irp
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookSignalCompletion(
|
|||
|
IN PDEVICE_OBJECT DeviceObject,
|
|||
|
IN PIRP Irp,
|
|||
|
IN PKEVENT Event
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookSetTransferLength(
|
|||
|
IN PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookPower(
|
|||
|
IN PDEVICE_OBJECT DeviceObject,
|
|||
|
IN PIRP Irp
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookDeviceControl(
|
|||
|
PDEVICE_OBJECT DeviceObject,
|
|||
|
PIRP Irp
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookForwardIrpSynchronous(
|
|||
|
IN PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
IN PIRP Irp
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookGetDescriptor(
|
|||
|
IN PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
IN PSTORAGE_PROPERTY_ID PropertyId,
|
|||
|
OUT PSTORAGE_DESCRIPTOR_HEADER *Descriptor
|
|||
|
);
|
|||
|
|
|||
|
//////////////////////////////////////////////////////////
|
|||
|
//
|
|||
|
// from redbook\ioctl.c
|
|||
|
//
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookDCPause(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
PREDBOOK_THREAD_IOCTL_DATA Context
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookDCStop(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
PREDBOOK_THREAD_IOCTL_DATA Context
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookDCResume(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
PREDBOOK_THREAD_IOCTL_DATA Context
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookDCPlay(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
PREDBOOK_THREAD_IOCTL_DATA Context
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookDCSeek(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
PREDBOOK_THREAD_IOCTL_DATA Context
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookDCReadQ(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
PREDBOOK_THREAD_IOCTL_DATA Context
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookDCCheckVerify(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
PREDBOOK_THREAD_IOCTL_DATA Context
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookDCSetVolume(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
PREDBOOK_THREAD_IOCTL_DATA Context
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookDCGetVolume(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
PREDBOOK_THREAD_IOCTL_DATA Context
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookDCDefault(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
PREDBOOK_THREAD_IOCTL_DATA Context
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookThreadIoctlHandler(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
PLIST_ENTRY ListEntry
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookCompleteIoctl(
|
|||
|
IN PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
IN PREDBOOK_THREAD_IOCTL_DATA Context,
|
|||
|
IN BOOLEAN SendToLowerDriver
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookThreadIoctlCompletionHandler(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
//////////////////////////////////////////////////////////////////////
|
|||
|
//
|
|||
|
// From redbook\thread.c
|
|||
|
//
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookSystemThread(
|
|||
|
PVOID Context
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookReadRaw(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
PREDBOOK_COMPLETION_CONTEXT Context
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookReadRawCompletion(
|
|||
|
PVOID UnusableParameter,
|
|||
|
PIRP Irp,
|
|||
|
PREDBOOK_COMPLETION_CONTEXT Context
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookStream(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
PREDBOOK_COMPLETION_CONTEXT Context
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookStreamCompletion(
|
|||
|
PVOID UnusableParameter,
|
|||
|
PIRP Irp,
|
|||
|
PREDBOOK_COMPLETION_CONTEXT Context
|
|||
|
);
|
|||
|
|
|||
|
|
|||
|
ULONG
|
|||
|
GetCdromState(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
LONG
|
|||
|
SetCdromState(
|
|||
|
IN PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
IN LONG ExpectedOldState,
|
|||
|
IN LONG NewState
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookDeallocatePlayResources(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookAllocatePlayResources(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
BOOLEAN
|
|||
|
RedBookArePlayResourcesAllocated(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
RedBookCacheToc(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
ULONG
|
|||
|
WhichTrackContainsThisLBA(
|
|||
|
PCDROM_TOC Toc,
|
|||
|
ULONG Lba
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookThreadDigitalHandler(
|
|||
|
IN PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
PLIST_ENTRY ListEntry
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
AddWmiStats(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension,
|
|||
|
PREDBOOK_COMPLETION_CONTEXT Context
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookCheckForDiscChangeAndFreeResources(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
SysAudioPnpNotification(
|
|||
|
PDEVICE_INTERFACE_CHANGE_NOTIFICATION Notification,
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
RedBookCheckForAudioDeviceRemoval(
|
|||
|
PREDBOOK_DEVICE_EXTENSION DeviceExtension
|
|||
|
);
|
|||
|
|
|||
|
//////////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
__inline
|
|||
|
ULONG
|
|||
|
SafeMod(
|
|||
|
IN ULONG Value,
|
|||
|
IN ULONG ModBy
|
|||
|
)
|
|||
|
{
|
|||
|
return ((Value+ModBy)%ModBy);
|
|||
|
}
|
|||
|
|
|||
|
__inline
|
|||
|
NTSTATUS
|
|||
|
RedBookSendToNextDriver(
|
|||
|
PDEVICE_OBJECT DeviceObject,
|
|||
|
PIRP Irp
|
|||
|
)
|
|||
|
|
|||
|
/*++
|
|||
|
|
|||
|
Routine Description:
|
|||
|
|
|||
|
This routine is sends the Irp to the next driver in line
|
|||
|
when the Irp is not processed by this driver.
|
|||
|
This happens quite often, so should not have any debug statements.
|
|||
|
Request this as an inline operation for speed.
|
|||
|
|
|||
|
Arguments:
|
|||
|
|
|||
|
DeviceObject
|
|||
|
Irp
|
|||
|
|
|||
|
Return Value:
|
|||
|
|
|||
|
NTSTATUS
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
{
|
|||
|
IoSkipCurrentIrpStackLocation(Irp);
|
|||
|
return IoCallDriver(((PREDBOOK_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->TargetDeviceObject,Irp);
|
|||
|
}
|
|||
|
|
|||
|
//////////////////////////////////////////////////////////////////////
|
|||
|
|
|||
|
|
|||
|
#endif // ___REDBOOK_PROTOTYPES_H
|
|||
|
|