mirror of
https://github.com/reactos/reactos.git
synced 2025-07-13 06:24:13 +00:00
Merge trunk head (46467)
svn path=/branches/ros-amd64-bringup/; revision=46468
This commit is contained in:
commit
42f403f39d
159 changed files with 31194 additions and 6327 deletions
|
@ -28,6 +28,8 @@
|
||||||
<compilerflag>-mpreferred-stack-boundary=2</compilerflag>
|
<compilerflag>-mpreferred-stack-boundary=2</compilerflag>
|
||||||
<compilerflag compiler="midl">-m32 --win32</compilerflag>
|
<compilerflag compiler="midl">-m32 --win32</compilerflag>
|
||||||
<compilerflag compiler="cc,cxx">-gstabs+</compilerflag>
|
<compilerflag compiler="cc,cxx">-gstabs+</compilerflag>
|
||||||
|
<compilerflag compiler="cc,cxx">-fno-set-stack-executable</compilerflag>
|
||||||
|
<compilerflag compiler="cc,cxx">-fno-optimize-sibling-calls</compilerflag>
|
||||||
<compilerflag compiler="as">-gstabs+</compilerflag>
|
<compilerflag compiler="as">-gstabs+</compilerflag>
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
|
<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
|
||||||
<module name="bootcd" type="iso" output="ReactOS-$(ARCH).iso">
|
<if property="ARCH" value="i386>
|
||||||
|
<module name="bootcd" type="iso" output="ReactOS.iso">
|
||||||
<bootsector>isoboot</bootsector>
|
<bootsector>isoboot</bootsector>
|
||||||
</module>
|
</module>
|
||||||
|
</if>
|
||||||
|
<ifnot property="ARCH" value="i386>
|
||||||
|
<module name="bootcd" type="iso" output="ReactOS-$(ARCH).iso">
|
||||||
|
<bootsector>isoboot</bootsector>
|
||||||
|
</module>
|
||||||
|
</ifnot>
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
|
<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
|
||||||
<module name="livecd" type="liveiso" output="ReactOS-LiveCD-$(ARCH).iso">
|
<if property="ARCH" value="i386>
|
||||||
|
<module name="livecd" type="liveiso" output="ReactOS-LiveCD.iso">
|
||||||
<bootsector>isoboot</bootsector>
|
<bootsector>isoboot</bootsector>
|
||||||
</module>
|
</module>
|
||||||
|
</if>
|
||||||
|
<ifnot property="ARCH" value="i386>
|
||||||
|
<module name="livecd" type="liveiso" output="ReactOS-LiveCD-$(ARCH).iso">
|
||||||
|
<bootsector>isoboot</bootsector>
|
||||||
|
</module>
|
||||||
|
</ifnot>
|
||||||
|
|
|
@ -385,7 +385,7 @@ SpiCreatePortConfig(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKCDECLAPI
|
__cdecl
|
||||||
ScsiDebugPrint(
|
ScsiDebugPrint(
|
||||||
IN ULONG DebugPrintLevel,
|
IN ULONG DebugPrintLevel,
|
||||||
IN PCCHAR DebugMessage,
|
IN PCCHAR DebugMessage,
|
||||||
|
@ -421,7 +421,7 @@ ScsiDebugPrint(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortCompleteRequest(
|
ScsiPortCompleteRequest(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN UCHAR PathId,
|
IN UCHAR PathId,
|
||||||
|
@ -435,7 +435,7 @@ ScsiPortCompleteRequest(
|
||||||
|
|
||||||
#undef ScsiPortConvertPhysicalAddressToUlong
|
#undef ScsiPortConvertPhysicalAddressToUlong
|
||||||
ULONG
|
ULONG
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortConvertPhysicalAddressToUlong(
|
ScsiPortConvertPhysicalAddressToUlong(
|
||||||
IN SCSI_PHYSICAL_ADDRESS Address)
|
IN SCSI_PHYSICAL_ADDRESS Address)
|
||||||
{
|
{
|
||||||
|
@ -443,7 +443,7 @@ ScsiPortConvertPhysicalAddressToUlong(
|
||||||
}
|
}
|
||||||
|
|
||||||
SCSI_PHYSICAL_ADDRESS
|
SCSI_PHYSICAL_ADDRESS
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortConvertUlongToPhysicalAddress(
|
ScsiPortConvertUlongToPhysicalAddress(
|
||||||
IN ULONG UlongAddress)
|
IN ULONG UlongAddress)
|
||||||
{
|
{
|
||||||
|
@ -451,7 +451,7 @@ ScsiPortConvertUlongToPhysicalAddress(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortFlushDma(
|
ScsiPortFlushDma(
|
||||||
IN PVOID DeviceExtension)
|
IN PVOID DeviceExtension)
|
||||||
{
|
{
|
||||||
|
@ -460,7 +460,7 @@ ScsiPortFlushDma(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortFreeDeviceBase(
|
ScsiPortFreeDeviceBase(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN PVOID MappedAddress)
|
IN PVOID MappedAddress)
|
||||||
|
@ -469,7 +469,7 @@ ScsiPortFreeDeviceBase(
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortGetBusData(
|
ScsiPortGetBusData(
|
||||||
IN PVOID DeviceExtension,
|
IN PVOID DeviceExtension,
|
||||||
IN ULONG BusDataType,
|
IN ULONG BusDataType,
|
||||||
|
@ -482,7 +482,7 @@ ScsiPortGetBusData(
|
||||||
}
|
}
|
||||||
|
|
||||||
PVOID
|
PVOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortGetDeviceBase(
|
ScsiPortGetDeviceBase(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN INTERFACE_TYPE BusType,
|
IN INTERFACE_TYPE BusType,
|
||||||
|
@ -514,7 +514,7 @@ ScsiPortGetDeviceBase(
|
||||||
}
|
}
|
||||||
|
|
||||||
PVOID
|
PVOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortGetLogicalUnit(
|
ScsiPortGetLogicalUnit(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN UCHAR PathId,
|
IN UCHAR PathId,
|
||||||
|
@ -527,7 +527,7 @@ ScsiPortGetLogicalUnit(
|
||||||
}
|
}
|
||||||
|
|
||||||
SCSI_PHYSICAL_ADDRESS
|
SCSI_PHYSICAL_ADDRESS
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortGetPhysicalAddress(
|
ScsiPortGetPhysicalAddress(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
|
IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
|
||||||
|
@ -564,7 +564,7 @@ ScsiPortGetPhysicalAddress(
|
||||||
}
|
}
|
||||||
|
|
||||||
PSCSI_REQUEST_BLOCK
|
PSCSI_REQUEST_BLOCK
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortGetSrb(
|
ScsiPortGetSrb(
|
||||||
IN PVOID DeviceExtension,
|
IN PVOID DeviceExtension,
|
||||||
IN UCHAR PathId,
|
IN UCHAR PathId,
|
||||||
|
@ -641,7 +641,7 @@ SpiAllocateCommonBuffer(
|
||||||
}
|
}
|
||||||
|
|
||||||
PVOID
|
PVOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortGetUncachedExtension(
|
ScsiPortGetUncachedExtension(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN PPORT_CONFIGURATION_INFORMATION ConfigInfo,
|
IN PPORT_CONFIGURATION_INFORMATION ConfigInfo,
|
||||||
|
@ -726,7 +726,7 @@ ScsiPortGetUncachedExtension(
|
||||||
}
|
}
|
||||||
|
|
||||||
PVOID
|
PVOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortGetVirtualAddress(
|
ScsiPortGetVirtualAddress(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN SCSI_PHYSICAL_ADDRESS PhysicalAddress)
|
IN SCSI_PHYSICAL_ADDRESS PhysicalAddress)
|
||||||
|
@ -1031,7 +1031,7 @@ SpiGetPciConfigData(
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortInitialize(
|
ScsiPortInitialize(
|
||||||
IN PVOID Argument1,
|
IN PVOID Argument1,
|
||||||
IN PVOID Argument2,
|
IN PVOID Argument2,
|
||||||
|
@ -1186,7 +1186,7 @@ ScsiPortInitialize(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortIoMapTransfer(
|
ScsiPortIoMapTransfer(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN PSCSI_REQUEST_BLOCK Srb,
|
IN PSCSI_REQUEST_BLOCK Srb,
|
||||||
|
@ -1198,7 +1198,7 @@ ScsiPortIoMapTransfer(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortLogError(
|
ScsiPortLogError(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
|
IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
|
||||||
|
@ -1213,7 +1213,7 @@ ScsiPortLogError(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortMoveMemory(
|
ScsiPortMoveMemory(
|
||||||
IN PVOID WriteBuffer,
|
IN PVOID WriteBuffer,
|
||||||
IN PVOID ReadBuffer,
|
IN PVOID ReadBuffer,
|
||||||
|
@ -1223,7 +1223,7 @@ ScsiPortMoveMemory(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKCDECLAPI
|
__cdecl
|
||||||
ScsiPortNotification(
|
ScsiPortNotification(
|
||||||
IN SCSI_NOTIFICATION_TYPE NotificationType,
|
IN SCSI_NOTIFICATION_TYPE NotificationType,
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
|
@ -1259,7 +1259,7 @@ ScsiPortNotification(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortReadPortBufferUchar(
|
ScsiPortReadPortBufferUchar(
|
||||||
IN PUCHAR Port,
|
IN PUCHAR Port,
|
||||||
OUT PUCHAR Buffer,
|
OUT PUCHAR Buffer,
|
||||||
|
@ -1269,7 +1269,7 @@ ScsiPortReadPortBufferUchar(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortReadPortBufferUlong(
|
ScsiPortReadPortBufferUlong(
|
||||||
IN PULONG Port,
|
IN PULONG Port,
|
||||||
OUT PULONG Buffer,
|
OUT PULONG Buffer,
|
||||||
|
@ -1279,7 +1279,7 @@ ScsiPortReadPortBufferUlong(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortReadPortBufferUshort(
|
ScsiPortReadPortBufferUshort(
|
||||||
IN PUSHORT Port,
|
IN PUSHORT Port,
|
||||||
OUT PUSHORT Buffer,
|
OUT PUSHORT Buffer,
|
||||||
|
@ -1289,7 +1289,7 @@ ScsiPortReadPortBufferUshort(
|
||||||
}
|
}
|
||||||
|
|
||||||
UCHAR
|
UCHAR
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortReadPortUchar(
|
ScsiPortReadPortUchar(
|
||||||
IN PUCHAR Port)
|
IN PUCHAR Port)
|
||||||
{
|
{
|
||||||
|
@ -1300,7 +1300,7 @@ ScsiPortReadPortUchar(
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortReadPortUlong(
|
ScsiPortReadPortUlong(
|
||||||
IN PULONG Port)
|
IN PULONG Port)
|
||||||
{
|
{
|
||||||
|
@ -1308,7 +1308,7 @@ ScsiPortReadPortUlong(
|
||||||
}
|
}
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortReadPortUshort(
|
ScsiPortReadPortUshort(
|
||||||
IN PUSHORT Port)
|
IN PUSHORT Port)
|
||||||
{
|
{
|
||||||
|
@ -1316,7 +1316,7 @@ ScsiPortReadPortUshort(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortReadRegisterBufferUchar(
|
ScsiPortReadRegisterBufferUchar(
|
||||||
IN PUCHAR Register,
|
IN PUCHAR Register,
|
||||||
IN PUCHAR Buffer,
|
IN PUCHAR Buffer,
|
||||||
|
@ -1327,7 +1327,7 @@ ScsiPortReadRegisterBufferUchar(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortReadRegisterBufferUlong(
|
ScsiPortReadRegisterBufferUlong(
|
||||||
IN PULONG Register,
|
IN PULONG Register,
|
||||||
IN PULONG Buffer,
|
IN PULONG Buffer,
|
||||||
|
@ -1338,7 +1338,7 @@ ScsiPortReadRegisterBufferUlong(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortReadRegisterBufferUshort(
|
ScsiPortReadRegisterBufferUshort(
|
||||||
IN PUSHORT Register,
|
IN PUSHORT Register,
|
||||||
IN PUSHORT Buffer,
|
IN PUSHORT Buffer,
|
||||||
|
@ -1349,7 +1349,7 @@ ScsiPortReadRegisterBufferUshort(
|
||||||
}
|
}
|
||||||
|
|
||||||
UCHAR
|
UCHAR
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortReadRegisterUchar(
|
ScsiPortReadRegisterUchar(
|
||||||
IN PUCHAR Register)
|
IN PUCHAR Register)
|
||||||
{
|
{
|
||||||
|
@ -1357,7 +1357,7 @@ ScsiPortReadRegisterUchar(
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortReadRegisterUlong(
|
ScsiPortReadRegisterUlong(
|
||||||
IN PULONG Register)
|
IN PULONG Register)
|
||||||
{
|
{
|
||||||
|
@ -1365,7 +1365,7 @@ ScsiPortReadRegisterUlong(
|
||||||
}
|
}
|
||||||
|
|
||||||
USHORT
|
USHORT
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortReadRegisterUshort(
|
ScsiPortReadRegisterUshort(
|
||||||
IN PUSHORT Register)
|
IN PUSHORT Register)
|
||||||
{
|
{
|
||||||
|
@ -1373,7 +1373,7 @@ ScsiPortReadRegisterUshort(
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortSetBusDataByOffset(
|
ScsiPortSetBusDataByOffset(
|
||||||
IN PVOID DeviceExtension,
|
IN PVOID DeviceExtension,
|
||||||
IN ULONG BusDataType,
|
IN ULONG BusDataType,
|
||||||
|
@ -1389,7 +1389,7 @@ ScsiPortSetBusDataByOffset(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortStallExecution(
|
ScsiPortStallExecution(
|
||||||
IN ULONG Delay)
|
IN ULONG Delay)
|
||||||
{
|
{
|
||||||
|
@ -1397,7 +1397,7 @@ ScsiPortStallExecution(
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortValidateRange(
|
ScsiPortValidateRange(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN INTERFACE_TYPE BusType,
|
IN INTERFACE_TYPE BusType,
|
||||||
|
@ -1417,7 +1417,7 @@ ScsiPortValidateRange(
|
||||||
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortWritePortBufferUchar(
|
ScsiPortWritePortBufferUchar(
|
||||||
IN PUCHAR Port,
|
IN PUCHAR Port,
|
||||||
IN PUCHAR Buffer,
|
IN PUCHAR Buffer,
|
||||||
|
@ -1427,7 +1427,7 @@ ScsiPortWritePortBufferUchar(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortWritePortBufferUlong(
|
ScsiPortWritePortBufferUlong(
|
||||||
IN PULONG Port,
|
IN PULONG Port,
|
||||||
IN PULONG Buffer,
|
IN PULONG Buffer,
|
||||||
|
@ -1437,7 +1437,7 @@ ScsiPortWritePortBufferUlong(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortWritePortBufferUshort(
|
ScsiPortWritePortBufferUshort(
|
||||||
IN PUSHORT Port,
|
IN PUSHORT Port,
|
||||||
IN PUSHORT Buffer,
|
IN PUSHORT Buffer,
|
||||||
|
@ -1447,7 +1447,7 @@ ScsiPortWritePortBufferUshort(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortWritePortUchar(
|
ScsiPortWritePortUchar(
|
||||||
IN PUCHAR Port,
|
IN PUCHAR Port,
|
||||||
IN UCHAR Value)
|
IN UCHAR Value)
|
||||||
|
@ -1456,7 +1456,7 @@ ScsiPortWritePortUchar(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortWritePortUlong(
|
ScsiPortWritePortUlong(
|
||||||
IN PULONG Port,
|
IN PULONG Port,
|
||||||
IN ULONG Value)
|
IN ULONG Value)
|
||||||
|
@ -1465,7 +1465,7 @@ ScsiPortWritePortUlong(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortWritePortUshort(
|
ScsiPortWritePortUshort(
|
||||||
IN PUSHORT Port,
|
IN PUSHORT Port,
|
||||||
IN USHORT Value)
|
IN USHORT Value)
|
||||||
|
@ -1474,7 +1474,7 @@ ScsiPortWritePortUshort(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortWriteRegisterBufferUchar(
|
ScsiPortWriteRegisterBufferUchar(
|
||||||
IN PUCHAR Register,
|
IN PUCHAR Register,
|
||||||
IN PUCHAR Buffer,
|
IN PUCHAR Buffer,
|
||||||
|
@ -1485,7 +1485,7 @@ ScsiPortWriteRegisterBufferUchar(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortWriteRegisterBufferUlong(
|
ScsiPortWriteRegisterBufferUlong(
|
||||||
IN PULONG Register,
|
IN PULONG Register,
|
||||||
IN PULONG Buffer,
|
IN PULONG Buffer,
|
||||||
|
@ -1496,7 +1496,7 @@ ScsiPortWriteRegisterBufferUlong(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortWriteRegisterBufferUshort(
|
ScsiPortWriteRegisterBufferUshort(
|
||||||
IN PUSHORT Register,
|
IN PUSHORT Register,
|
||||||
IN PUSHORT Buffer,
|
IN PUSHORT Buffer,
|
||||||
|
@ -1507,7 +1507,7 @@ ScsiPortWriteRegisterBufferUshort(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortWriteRegisterUchar(
|
ScsiPortWriteRegisterUchar(
|
||||||
IN PUCHAR Register,
|
IN PUCHAR Register,
|
||||||
IN ULONG Value)
|
IN ULONG Value)
|
||||||
|
@ -1516,7 +1516,7 @@ ScsiPortWriteRegisterUchar(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortWriteRegisterUlong(
|
ScsiPortWriteRegisterUlong(
|
||||||
IN PULONG Register,
|
IN PULONG Register,
|
||||||
IN ULONG Value)
|
IN ULONG Value)
|
||||||
|
@ -1525,7 +1525,7 @@ ScsiPortWriteRegisterUlong(
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
ScsiPortWriteRegisterUshort(
|
ScsiPortWriteRegisterUshort(
|
||||||
IN PUSHORT Register,
|
IN PUSHORT Register,
|
||||||
IN USHORT Value)
|
IN USHORT Value)
|
||||||
|
|
|
@ -9,7 +9,9 @@
|
||||||
|
|
||||||
#include "precomp.h"
|
#include "precomp.h"
|
||||||
|
|
||||||
|
#ifndef _MSC_VER
|
||||||
const GUID IID_IKsPropertySet = {0x31efac30, 0x515c, 0x11d0, {0xa9,0xaa, 0x00,0xaa,0x00,0x61,0xbe,0x93}};
|
const GUID IID_IKsPropertySet = {0x31efac30, 0x515c, 0x11d0, {0xa9,0xaa, 0x00,0xaa,0x00,0x61,0xbe,0x93}};
|
||||||
|
#endif
|
||||||
|
|
||||||
class CControlNode : public IUnknown
|
class CControlNode : public IUnknown
|
||||||
{
|
{
|
||||||
|
@ -32,12 +34,12 @@ public:
|
||||||
return m_Ref;
|
return m_Ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
CControlNode(HANDLE hFile, ULONG NodeType, ULONG PinId) : m_Ref(0), m_hFile(hFile), m_NodeType(NodeType), m_PinId(PinId){};
|
CControlNode(IKsPropertySet * pProperty, ULONG NodeType, ULONG PinId) : m_Ref(0), m_pKsProperty(pProperty), m_NodeType(NodeType), m_PinId(PinId){};
|
||||||
virtual ~CControlNode(){};
|
virtual ~CControlNode(){};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
LONG m_Ref;
|
LONG m_Ref;
|
||||||
HANDLE m_hFile;
|
IKsPropertySet * m_pKsProperty;
|
||||||
ULONG m_NodeType;
|
ULONG m_NodeType;
|
||||||
ULONG m_PinId;
|
ULONG m_PinId;
|
||||||
};
|
};
|
||||||
|
@ -58,19 +60,19 @@ CControlNode::QueryInterface(
|
||||||
}
|
}
|
||||||
else if(IsEqualGUID(refiid, IID_IBDA_FrequencyFilter))
|
else if(IsEqualGUID(refiid, IID_IBDA_FrequencyFilter))
|
||||||
{
|
{
|
||||||
return CBDAFrequencyFilter_fnConstructor(m_hFile, m_NodeType, refiid, Output);
|
return CBDAFrequencyFilter_fnConstructor(m_pKsProperty, m_NodeType, refiid, Output);
|
||||||
}
|
}
|
||||||
else if(IsEqualGUID(refiid, IID_IBDA_SignalStatistics))
|
else if(IsEqualGUID(refiid, IID_IBDA_SignalStatistics))
|
||||||
{
|
{
|
||||||
return CBDASignalStatistics_fnConstructor(m_hFile, m_NodeType, refiid, Output);
|
return CBDASignalStatistics_fnConstructor(m_pKsProperty, m_NodeType, refiid, Output);
|
||||||
}
|
}
|
||||||
else if(IsEqualGUID(refiid, IID_IBDA_LNBInfo))
|
else if(IsEqualGUID(refiid, IID_IBDA_LNBInfo))
|
||||||
{
|
{
|
||||||
return CBDALNBInfo_fnConstructor(m_hFile, m_NodeType, refiid, Output);
|
return CBDALNBInfo_fnConstructor(m_pKsProperty, m_NodeType, refiid, Output);
|
||||||
}
|
}
|
||||||
else if(IsEqualGUID(refiid, IID_IBDA_DigitalDemodulator))
|
else if(IsEqualGUID(refiid, IID_IBDA_DigitalDemodulator))
|
||||||
{
|
{
|
||||||
return CBDADigitalDemodulator_fnConstructor(m_hFile, m_NodeType, refiid, Output);
|
return CBDADigitalDemodulator_fnConstructor(m_pKsProperty, m_NodeType, refiid, Output);
|
||||||
}
|
}
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[MAX_PATH];
|
WCHAR Buffer[MAX_PATH];
|
||||||
|
@ -88,7 +90,6 @@ CControlNode::QueryInterface(
|
||||||
HRESULT
|
HRESULT
|
||||||
WINAPI
|
WINAPI
|
||||||
CControlNode_fnConstructor(
|
CControlNode_fnConstructor(
|
||||||
HANDLE hFile,
|
|
||||||
IBaseFilter * pFilter,
|
IBaseFilter * pFilter,
|
||||||
ULONG NodeType,
|
ULONG NodeType,
|
||||||
ULONG PinId,
|
ULONG PinId,
|
||||||
|
@ -98,7 +99,7 @@ CControlNode_fnConstructor(
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
IPin * pPin = NULL;
|
IPin * pPin = NULL;
|
||||||
IKsObject * pObject = NULL;
|
IKsPropertySet * pProperty;
|
||||||
|
|
||||||
// store pin id
|
// store pin id
|
||||||
swprintf(Buffer, L"%u", PinId);
|
swprintf(Buffer, L"%u", PinId);
|
||||||
|
@ -115,26 +116,21 @@ CControlNode_fnConstructor(
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// query IKsObject interface
|
// query for IKsPropertySet interface
|
||||||
hr = pPin->QueryInterface(IID_IKsObject, (void**)&pObject);
|
hr = pPin->QueryInterface(IID_IKsPropertySet, (void**)&pProperty);
|
||||||
|
if (FAILED(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
swprintf(Buffer, L"CControlNode_fnConstructor get IID_IKsObject status %lx\n", hr);
|
swprintf(Buffer, L"CControlNode_fnConstructor get IID_IKsObject status %lx\n", hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (SUCCEEDED(hr))
|
|
||||||
{
|
|
||||||
// get pin handle
|
|
||||||
hFile = pObject->KsGetObjectHandle();
|
|
||||||
// release IKsObject interface
|
|
||||||
pObject->Release();
|
|
||||||
}
|
|
||||||
// release IPin interface
|
// release IPin interface
|
||||||
pPin->Release();
|
pPin->Release();
|
||||||
|
|
||||||
// construct device control
|
// construct device control
|
||||||
CControlNode * handler = new CControlNode(hFile, NodeType, PinId);
|
CControlNode * handler = new CControlNode(pProperty, NodeType, PinId);
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
OutputDebugStringW(L"CControlNode_fnConstructor\n");
|
OutputDebugStringW(L"CControlNode_fnConstructor\n");
|
||||||
|
|
|
@ -9,20 +9,24 @@
|
||||||
|
|
||||||
#include "precomp.h"
|
#include "precomp.h"
|
||||||
|
|
||||||
const GUID CLSID_DVBTNetworkProvider = {0x216c62df, 0x6d7f, 0x4e9a, {0x85, 0x71, 0x5, 0xf1, 0x4e, 0xdb, 0x76, 0x6a}};
|
|
||||||
const GUID IID_IAC3Filter = {0xe4539501, 0xc609, 0x46ea, {0xad, 0x2a, 0x0e, 0x97, 0x00, 0x24, 0x56, 0x83}};
|
|
||||||
const GUID IID_IAsyncReader = {0x56A868AA, 0x0AD4, 0x11CE, {0xB0, 0x3A, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70}};
|
|
||||||
const GUID IID_IMatrixMixer = {0xafc57835, 0x2fd1, 0x4541, {0xa6, 0xd9, 0x0d, 0xb7, 0x18, 0x56, 0xe5, 0x89}};
|
|
||||||
const GUID IID_IBDA_NetworkProvider = {0xfd501041, 0x8ebe, 0x11ce, {0x81, 0x83, 0x00, 0xaa, 0x00, 0x57, 0x7d, 0xa2}};
|
|
||||||
const GUID IID_IAMOpenProgress = {0x8E1C39A1, 0xDE53, 0x11cf, {0xAA, 0x63, 0x00, 0x80, 0xC7, 0x44, 0x52, 0x8D}};
|
|
||||||
const GUID IID_IDistributorNotify = {0x56a868af, 0x0ad4, 0x11ce, {0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}};
|
|
||||||
const GUID IID_IBDA_DeviceControl = {0xFD0A5AF3, 0xB41D, 0x11d2, {0x9C, 0x95, 0x00, 0xC0, 0x4F, 0x79, 0x71, 0xE0}};
|
|
||||||
const GUID IID_IBDA_Topology = {0x79B56888, 0x7FEA, 0x4690, {0xB4, 0x5D, 0x38, 0xFD, 0x3C, 0x78, 0x49, 0xBE}};
|
|
||||||
const GUID IID_IKsObject = {0x423c13a2, 0x2070, 0x11d0, {0x9e, 0xf7, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1}};
|
const GUID IID_IKsObject = {0x423c13a2, 0x2070, 0x11d0, {0x9e, 0xf7, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1}};
|
||||||
|
|
||||||
|
#ifndef _MSC_VER
|
||||||
|
const GUID CLSID_DVBTNetworkProvider = {0x216c62df, 0x6d7f, 0x4e9a, {0x85, 0x71, 0x5, 0xf1, 0x4e, 0xdb, 0x76, 0x6a}};
|
||||||
|
|
||||||
const GUID KSPROPSETID_BdaTopology = {0xa14ee835, 0x0a23, 0x11d3, {0x9c, 0xc7, 0x0, 0xc0, 0x4f, 0x79, 0x71, 0xe0}};
|
const GUID KSPROPSETID_BdaTopology = {0xa14ee835, 0x0a23, 0x11d3, {0x9c, 0xc7, 0x0, 0xc0, 0x4f, 0x79, 0x71, 0xe0}};
|
||||||
const GUID KSMETHODSETID_BdaDeviceConfiguration = {0x71985f45, 0x1ca1, 0x11d3, {0x9c, 0xc8, 0x0, 0xc0, 0x4f, 0x79, 0x71, 0xe0}};
|
const GUID KSMETHODSETID_BdaDeviceConfiguration = {0x71985f45, 0x1ca1, 0x11d3, {0x9c, 0xc8, 0x0, 0xc0, 0x4f, 0x79, 0x71, 0xe0}};
|
||||||
const GUID IID_IBaseFilter = {0x56a86895, 0x0ad4, 0x11ce, {0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70}};
|
|
||||||
const GUID KSMETHODSETID_BdaChangeSync = {0xfd0a5af3, 0xb41d, 0x11d2, {0x9c, 0x95, 0x0, 0xc0, 0x4f, 0x79, 0x71, 0xe0}};
|
const GUID KSMETHODSETID_BdaChangeSync = {0xfd0a5af3, 0xb41d, 0x11d2, {0x9c, 0x95, 0x0, 0xc0, 0x4f, 0x79, 0x71, 0xe0}};
|
||||||
|
const GUID IID_IBaseFilter = {0x56a86895, 0x0ad4, 0x11ce, {0xb0,0x3a, 0x00,0x20,0xaf,0x0b,0xa7,0x70}};
|
||||||
|
const GUID IID_IAsyncReader = {0x56A868AA, 0x0AD4, 0x11CE, {0xB0, 0x3A, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70}};
|
||||||
|
const GUID IID_IAMOpenProgress = {0x8E1C39A1, 0xDE53, 0x11cf, {0xAA, 0x63, 0x00, 0x80, 0xC7, 0x44, 0x52, 0x8D}};
|
||||||
|
const GUID IID_IBDA_Topology = {0x79B56888, 0x7FEA, 0x4690, {0xB4, 0x5D, 0x38, 0xFD, 0x3C, 0x78, 0x49, 0xBE}};
|
||||||
|
const GUID IID_IBDA_NetworkProvider = {0xfd501041, 0x8ebe, 0x11ce, {0x81, 0x83, 0x00, 0xaa, 0x00, 0x57, 0x7d, 0xa2}};
|
||||||
|
const GUID IID_IBDA_DeviceControl = {0xFD0A5AF3, 0xB41D, 0x11d2, {0x9C, 0x95, 0x00, 0xC0, 0x4F, 0x79, 0x71, 0xE0}};
|
||||||
|
|
||||||
|
const GUID IID_IDistributorNotify = {0x56a868af, 0x0ad4, 0x11ce, {0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
class CBDADeviceControl : public IBDA_DeviceControl,
|
class CBDADeviceControl : public IBDA_DeviceControl,
|
||||||
public IBDA_Topology
|
public IBDA_Topology
|
||||||
|
@ -476,7 +480,7 @@ CBDADeviceControl::GetControlNode(ULONG ulInputPinId, ULONG ulOutputPinId, ULONG
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
return hr;
|
return hr;
|
||||||
|
|
||||||
hr = CControlNode_fnConstructor(m_Handle, m_pFilter, ulNodeType, PinId, IID_IUnknown, (LPVOID*)ppControlNode);
|
hr = CControlNode_fnConstructor(m_pFilter, ulNodeType, PinId, IID_IUnknown, (LPVOID*)ppControlNode);
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
swprintf(Buffer, L"CBDADeviceControl::GetControlNode: hr %lx\n", hr);
|
swprintf(Buffer, L"CBDADeviceControl::GetControlNode: hr %lx\n", hr);
|
||||||
|
|
|
@ -9,8 +9,10 @@
|
||||||
|
|
||||||
#include "precomp.h"
|
#include "precomp.h"
|
||||||
|
|
||||||
|
#ifndef _MSC_VER
|
||||||
const GUID IID_IBDA_DigitalDemodulator = {0xef30f379, 0x985b, 0x4d10, {0xb6, 0x40, 0xa7, 0x9d, 0x5e, 0x04, 0xe1, 0xe0}};
|
const GUID IID_IBDA_DigitalDemodulator = {0xef30f379, 0x985b, 0x4d10, {0xb6, 0x40, 0xa7, 0x9d, 0x5e, 0x04, 0xe1, 0xe0}};
|
||||||
const GUID KSPROPSETID_BdaDigitalDemodulator = {0xef30f379, 0x985b, 0x4d10, {0xb6, 0x40, 0xa7, 0x9d, 0x5e, 0x4, 0xe1, 0xe0}};
|
const GUID KSPROPSETID_BdaDigitalDemodulator = {0xef30f379, 0x985b, 0x4d10, {0xb6, 0x40, 0xa7, 0x9d, 0x5e, 0x4, 0xe1, 0xe0}};
|
||||||
|
#endif
|
||||||
|
|
||||||
class CBDADigitalDemodulator : public IBDA_DigitalDemodulator
|
class CBDADigitalDemodulator : public IBDA_DigitalDemodulator
|
||||||
{
|
{
|
||||||
|
@ -48,12 +50,12 @@ public:
|
||||||
HRESULT STDMETHODCALLTYPE put_SpectralInversion(SpectralInversion *pSpectralInversion);
|
HRESULT STDMETHODCALLTYPE put_SpectralInversion(SpectralInversion *pSpectralInversion);
|
||||||
HRESULT STDMETHODCALLTYPE get_SpectralInversion(SpectralInversion *pSpectralInversion);
|
HRESULT STDMETHODCALLTYPE get_SpectralInversion(SpectralInversion *pSpectralInversion);
|
||||||
|
|
||||||
CBDADigitalDemodulator(HANDLE hFile, ULONG NodeId) : m_Ref(0), m_hFile(hFile), m_NodeId(NodeId){};
|
CBDADigitalDemodulator(IKsPropertySet * pProperty, ULONG NodeId) : m_Ref(0), m_pProperty(pProperty), m_NodeId(NodeId){};
|
||||||
~CBDADigitalDemodulator(){};
|
~CBDADigitalDemodulator(){};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
LONG m_Ref;
|
LONG m_Ref;
|
||||||
HANDLE m_hFile;
|
IKsPropertySet * m_pProperty;
|
||||||
ULONG m_NodeId;
|
ULONG m_NodeId;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -86,6 +88,7 @@ CBDADigitalDemodulator::QueryInterface(
|
||||||
swprintf(Buffer, L"CBDADigitalDemodulator::QueryInterface: NoInterface for %s", lpstr);
|
swprintf(Buffer, L"CBDADigitalDemodulator::QueryInterface: NoInterface for %s", lpstr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
CoTaskMemFree(lpstr);
|
CoTaskMemFree(lpstr);
|
||||||
|
DebugBreak();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return E_NOINTERFACE;
|
return E_NOINTERFACE;
|
||||||
|
@ -98,20 +101,17 @@ CBDADigitalDemodulator::put_ModulationType(ModulationType *pModulationType)
|
||||||
KSP_NODE Node;
|
KSP_NODE Node;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
ULONG BytesReturned;
|
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaDigitalDemodulator;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_MODULATION_TYPE;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_TOPOLOGY | KSPROPERTY_TYPE_SET;
|
|
||||||
Node.NodeId = m_NodeId;
|
Node.NodeId = m_NodeId;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), pModulationType, sizeof(ModulationType), &BytesReturned);
|
hr = m_pProperty->Set(KSPROPSETID_BdaDigitalDemodulator, KSPROPERTY_BDA_MODULATION_TYPE, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), pModulationType, sizeof(ModulationType));
|
||||||
|
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CBDADigitalDemodulator::put_ModulationType: hr %lx, BytesReturned %lu\n", hr, BytesReturned);
|
swprintf(Buffer, L"CBDADigitalDemodulator::put_ModulationType: hr %lx\n", hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -131,20 +131,18 @@ CBDADigitalDemodulator::put_InnerFECMethod(FECMethod *pFECMethod)
|
||||||
{
|
{
|
||||||
KSP_NODE Node;
|
KSP_NODE Node;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
ULONG BytesReturned;
|
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaDigitalDemodulator;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_INNER_FEC_TYPE;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_TOPOLOGY | KSPROPERTY_TYPE_SET;
|
|
||||||
Node.NodeId = m_NodeId;
|
Node.NodeId = m_NodeId;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), pFECMethod, sizeof(FECMethod), &BytesReturned);
|
hr = m_pProperty->Set(KSPROPSETID_BdaDigitalDemodulator, KSPROPERTY_BDA_INNER_FEC_TYPE, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), pFECMethod, sizeof(FECMethod));
|
||||||
|
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CBDADigitalDemodulator::put_InnerFECMethod: hr %lx, BytesReturned %lu\n", hr, BytesReturned);
|
swprintf(Buffer, L"CBDADigitalDemodulator::put_InnerFECMethod: hr %lx\n", hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -165,20 +163,16 @@ CBDADigitalDemodulator::put_InnerFECRate(BinaryConvolutionCodeRate *pFECRate)
|
||||||
KSP_NODE Node;
|
KSP_NODE Node;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
ULONG BytesReturned;
|
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaDigitalDemodulator;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_INNER_FEC_RATE;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_TOPOLOGY | KSPROPERTY_TYPE_SET;
|
|
||||||
Node.NodeId = m_NodeId;
|
Node.NodeId = m_NodeId;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), pFECRate, sizeof(BinaryConvolutionCodeRate), &BytesReturned);
|
hr = m_pProperty->Set(KSPROPSETID_BdaDigitalDemodulator, KSPROPERTY_BDA_INNER_FEC_RATE, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), pFECRate, sizeof(BinaryConvolutionCodeRate));
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CBDADigitalDemodulator::put_InnerFECRate: hr %lx, BytesReturned %lu\n", hr, BytesReturned);
|
swprintf(Buffer, L"CBDADigitalDemodulator::put_InnerFECRate: hr %lx\n", hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -198,20 +192,17 @@ CBDADigitalDemodulator::put_OuterFECMethod(FECMethod *pFECMethod)
|
||||||
{
|
{
|
||||||
KSP_NODE Node;
|
KSP_NODE Node;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
ULONG BytesReturned;
|
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaDigitalDemodulator;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_OUTER_FEC_TYPE;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_TOPOLOGY | KSPROPERTY_TYPE_SET;
|
|
||||||
Node.NodeId = m_NodeId;
|
Node.NodeId = m_NodeId;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), pFECMethod, sizeof(FECMethod), &BytesReturned);
|
hr = m_pProperty->Set(KSPROPSETID_BdaDigitalDemodulator, KSPROPERTY_BDA_OUTER_FEC_TYPE, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), pFECMethod, sizeof(FECMethod));
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CBDADigitalDemodulator::put_OuterFECMethod: hr %lx, BytesReturned %lu\n", hr, BytesReturned);
|
swprintf(Buffer, L"CBDADigitalDemodulator::put_OuterFECMethod: hr %lx\n", hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -232,20 +223,16 @@ CBDADigitalDemodulator::put_OuterFECRate(BinaryConvolutionCodeRate *pFECRate)
|
||||||
KSP_NODE Node;
|
KSP_NODE Node;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
ULONG BytesReturned;
|
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaDigitalDemodulator;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_OUTER_FEC_RATE;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_TOPOLOGY | KSPROPERTY_TYPE_SET;
|
|
||||||
Node.NodeId = m_NodeId;
|
Node.NodeId = m_NodeId;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), pFECRate, sizeof(BinaryConvolutionCodeRate), &BytesReturned);
|
hr = m_pProperty->Set(KSPROPSETID_BdaDigitalDemodulator, KSPROPERTY_BDA_OUTER_FEC_RATE, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), pFECRate, sizeof(BinaryConvolutionCodeRate));
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CBDADigitalDemodulator::put_OuterFECRate: hr %lx, BytesReturned %lu\n", hr, BytesReturned);
|
swprintf(Buffer, L"CBDADigitalDemodulator::put_OuterFECRate: hr %lx\n", hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -265,20 +252,17 @@ CBDADigitalDemodulator::put_SymbolRate(ULONG *pSymbolRate)
|
||||||
{
|
{
|
||||||
KSP_NODE Node;
|
KSP_NODE Node;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
ULONG BytesReturned;
|
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaDigitalDemodulator;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_SYMBOL_RATE;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_TOPOLOGY | KSPROPERTY_TYPE_SET;
|
|
||||||
Node.NodeId = m_NodeId;
|
Node.NodeId = m_NodeId;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), pSymbolRate, sizeof(ULONG), &BytesReturned);
|
hr = m_pProperty->Set(KSPROPSETID_BdaDigitalDemodulator, KSPROPERTY_BDA_SYMBOL_RATE, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), pSymbolRate, sizeof(ULONG));
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CBDADigitalDemodulator::put_SymbolRate: hr %lx, BytesReturned %lu\n", hr, BytesReturned);
|
swprintf(Buffer, L"CBDADigitalDemodulator::put_SymbolRate: hr %lx\n", hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -298,20 +282,17 @@ CBDADigitalDemodulator::put_SpectralInversion(SpectralInversion *pSpectralInvers
|
||||||
{
|
{
|
||||||
KSP_NODE Node;
|
KSP_NODE Node;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
ULONG BytesReturned;
|
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaDigitalDemodulator;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_SPECTRAL_INVERSION;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_TOPOLOGY | KSPROPERTY_TYPE_SET;
|
|
||||||
Node.NodeId = m_NodeId;
|
Node.NodeId = m_NodeId;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), pSpectralInversion, sizeof(SpectralInversion), &BytesReturned);
|
hr = m_pProperty->Set(KSPROPSETID_BdaDigitalDemodulator, KSPROPERTY_BDA_SPECTRAL_INVERSION, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), pSpectralInversion, sizeof(SpectralInversion));
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CBDADigitalDemodulator::put_SpectralInversion: hr %lx, BytesReturned %lu\n", hr, BytesReturned);
|
swprintf(Buffer, L"CBDADigitalDemodulator::put_SpectralInversion: hr %lx\n", hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -329,13 +310,13 @@ CBDADigitalDemodulator::get_SpectralInversion(SpectralInversion *pSpectralInvers
|
||||||
HRESULT
|
HRESULT
|
||||||
WINAPI
|
WINAPI
|
||||||
CBDADigitalDemodulator_fnConstructor(
|
CBDADigitalDemodulator_fnConstructor(
|
||||||
HANDLE hFile,
|
IKsPropertySet * pProperty,
|
||||||
ULONG NodeId,
|
ULONG NodeId,
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID * ppv)
|
LPVOID * ppv)
|
||||||
{
|
{
|
||||||
// construct device control
|
// construct device control
|
||||||
CBDADigitalDemodulator * handler = new CBDADigitalDemodulator(hFile, NodeId);
|
CBDADigitalDemodulator * handler = new CBDADigitalDemodulator(pProperty, NodeId);
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
OutputDebugStringW(L"CBDADigitalDemodulator_fnConstructor\n");
|
OutputDebugStringW(L"CBDADigitalDemodulator_fnConstructor\n");
|
||||||
|
|
|
@ -9,8 +9,10 @@
|
||||||
|
|
||||||
#include "precomp.h"
|
#include "precomp.h"
|
||||||
|
|
||||||
|
#ifndef _MSC_VER
|
||||||
const GUID IID_IBDA_FrequencyFilter = {0x71985f47, 0x1ca1, 0x11d3, {0x9c, 0xc8, 0x00, 0xc0, 0x4f, 0x79, 0x71, 0xe0}};
|
const GUID IID_IBDA_FrequencyFilter = {0x71985f47, 0x1ca1, 0x11d3, {0x9c, 0xc8, 0x00, 0xc0, 0x4f, 0x79, 0x71, 0xe0}};
|
||||||
const GUID KSPROPSETID_BdaFrequencyFilter = {0x71985f47, 0x1ca1, 0x11d3, {0x9c, 0xc8, 0x0, 0xc0, 0x4f, 0x79, 0x71, 0xe0}};
|
const GUID KSPROPSETID_BdaFrequencyFilter = {0x71985f47, 0x1ca1, 0x11d3, {0x9c, 0xc8, 0x0, 0xc0, 0x4f, 0x79, 0x71, 0xe0}};
|
||||||
|
#endif
|
||||||
|
|
||||||
class CBDAFrequencyFilter : public IBDA_FrequencyFilter
|
class CBDAFrequencyFilter : public IBDA_FrequencyFilter
|
||||||
{
|
{
|
||||||
|
@ -46,12 +48,12 @@ public:
|
||||||
HRESULT STDMETHODCALLTYPE put_FrequencyMultiplier(ULONG ulMultiplier);
|
HRESULT STDMETHODCALLTYPE put_FrequencyMultiplier(ULONG ulMultiplier);
|
||||||
HRESULT STDMETHODCALLTYPE get_FrequencyMultiplier(ULONG *pulMultiplier);
|
HRESULT STDMETHODCALLTYPE get_FrequencyMultiplier(ULONG *pulMultiplier);
|
||||||
|
|
||||||
CBDAFrequencyFilter(HANDLE hFile, ULONG NodeId) : m_Ref(0), m_hFile(hFile), m_NodeId(NodeId){};
|
CBDAFrequencyFilter(IKsPropertySet * pProperty, ULONG NodeId) : m_Ref(0), m_pProperty(pProperty), m_NodeId(NodeId){};
|
||||||
virtual ~CBDAFrequencyFilter(){};
|
virtual ~CBDAFrequencyFilter(){};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
LONG m_Ref;
|
LONG m_Ref;
|
||||||
HANDLE m_hFile;
|
IKsPropertySet * m_pProperty;
|
||||||
ULONG m_NodeId;
|
ULONG m_NodeId;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -84,6 +86,7 @@ CBDAFrequencyFilter::QueryInterface(
|
||||||
swprintf(Buffer, L"CControlNode::QueryInterface: NoInterface for %s", lpstr);
|
swprintf(Buffer, L"CControlNode::QueryInterface: NoInterface for %s", lpstr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
CoTaskMemFree(lpstr);
|
CoTaskMemFree(lpstr);
|
||||||
|
DebugBreak();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return E_NOINTERFACE;
|
return E_NOINTERFACE;
|
||||||
|
@ -110,20 +113,16 @@ CBDAFrequencyFilter::put_Frequency(ULONG ulFrequency)
|
||||||
KSP_NODE Node;
|
KSP_NODE Node;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
ULONG BytesReturned;
|
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaFrequencyFilter;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_RF_TUNER_FREQUENCY;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_TOPOLOGY;
|
|
||||||
Node.NodeId = m_NodeId;
|
Node.NodeId = m_NodeId;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), &ulFrequency, sizeof(ULONG), &BytesReturned);
|
hr = m_pProperty->Set(KSPROPSETID_BdaFrequencyFilter, KSPROPERTY_BDA_RF_TUNER_FREQUENCY, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), &ulFrequency, sizeof(ULONG));
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CBDAFrequencyFilter::put_Frequency: m_NodeId %lu hr %lx, BytesReturned %lu\n", m_NodeId, hr, BytesReturned);
|
swprintf(Buffer, L"CBDAFrequencyFilter::put_Frequency: m_NodeId %lu hr %lx\n", m_NodeId, hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -143,20 +142,17 @@ CBDAFrequencyFilter::put_Polarity(Polarisation Polarity)
|
||||||
{
|
{
|
||||||
KSP_NODE Node;
|
KSP_NODE Node;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
ULONG BytesReturned;
|
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaFrequencyFilter;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_RF_TUNER_POLARITY;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_TOPOLOGY;
|
|
||||||
Node.NodeId = m_NodeId;
|
Node.NodeId = m_NodeId;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), &Polarity, sizeof(Polarisation), &BytesReturned);
|
hr = m_pProperty->Set(KSPROPSETID_BdaFrequencyFilter, KSPROPERTY_BDA_RF_TUNER_POLARITY, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), &Polarity, sizeof(Polarisation));
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CBDAFrequencyFilter::put_Polarity: m_NodeId %lu hr %lx, BytesReturned %lu\n", m_NodeId, hr, BytesReturned);
|
swprintf(Buffer, L"CBDAFrequencyFilter::put_Polarity: m_NodeId %lu hr %lx\n", m_NodeId, hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -176,20 +172,17 @@ CBDAFrequencyFilter::put_Range(ULONG ulRange)
|
||||||
{
|
{
|
||||||
KSP_NODE Node;
|
KSP_NODE Node;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
ULONG BytesReturned;
|
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaFrequencyFilter;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_RF_TUNER_RANGE;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_TOPOLOGY;
|
|
||||||
Node.NodeId = m_NodeId;
|
Node.NodeId = m_NodeId;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), &ulRange, sizeof(ULONG), &BytesReturned);
|
hr = m_pProperty->Set(KSPROPSETID_BdaFrequencyFilter, KSPROPERTY_BDA_RF_TUNER_RANGE, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), &ulRange, sizeof(ULONG));
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CBDAFrequencyFilter::put_Polarity: m_NodeId %lu hr %lx, BytesReturned %lu\n", m_NodeId, hr, BytesReturned);
|
swprintf(Buffer, L"CBDAFrequencyFilter::put_Polarity: m_NodeId %lu hr %lx\n", m_NodeId, hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -209,20 +202,17 @@ CBDAFrequencyFilter::put_Bandwidth(ULONG ulBandwidth)
|
||||||
{
|
{
|
||||||
KSP_NODE Node;
|
KSP_NODE Node;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
ULONG BytesReturned;
|
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaFrequencyFilter;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_RF_TUNER_BANDWIDTH;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_TOPOLOGY;
|
|
||||||
Node.NodeId = m_NodeId;
|
Node.NodeId = m_NodeId;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), &ulBandwidth, sizeof(ULONG), &BytesReturned);
|
hr = m_pProperty->Set(KSPROPSETID_BdaFrequencyFilter, KSPROPERTY_BDA_RF_TUNER_BANDWIDTH, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), &ulBandwidth, sizeof(ULONG));
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CBDAFrequencyFilter::put_Bandwidth: m_NodeId %lu hr %lx, BytesReturned %lu\n", m_NodeId, hr, BytesReturned);
|
swprintf(Buffer, L"CBDAFrequencyFilter::put_Bandwidth: m_NodeId %lu hr %lx\n", m_NodeId, hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -241,20 +231,17 @@ CBDAFrequencyFilter::put_FrequencyMultiplier(ULONG ulMultiplier)
|
||||||
{
|
{
|
||||||
KSP_NODE Node;
|
KSP_NODE Node;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
ULONG BytesReturned;
|
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaFrequencyFilter;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_RF_TUNER_FREQUENCY_MULTIPLIER;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_TOPOLOGY;
|
|
||||||
Node.NodeId = m_NodeId;
|
Node.NodeId = m_NodeId;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), &ulMultiplier, sizeof(ULONG), &BytesReturned);
|
hr = m_pProperty->Set(KSPROPSETID_BdaFrequencyFilter, KSPROPERTY_BDA_RF_TUNER_FREQUENCY_MULTIPLIER, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), &ulMultiplier, sizeof(ULONG));
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CBDAFrequencyFilter::put_FrequencyMultiplier: m_NodeId %lu hr %lx, BytesReturned %lu\n", m_NodeId, hr, BytesReturned);
|
swprintf(Buffer, L"CBDAFrequencyFilter::put_FrequencyMultiplier: m_NodeId %lu hr %lx\n", m_NodeId, hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -271,13 +258,13 @@ CBDAFrequencyFilter::get_FrequencyMultiplier(ULONG *pulMultiplier)
|
||||||
HRESULT
|
HRESULT
|
||||||
WINAPI
|
WINAPI
|
||||||
CBDAFrequencyFilter_fnConstructor(
|
CBDAFrequencyFilter_fnConstructor(
|
||||||
HANDLE hFile,
|
IKsPropertySet* pProperty,
|
||||||
ULONG NodeId,
|
ULONG NodeId,
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID * ppv)
|
LPVOID * ppv)
|
||||||
{
|
{
|
||||||
// construct device control
|
// construct device control
|
||||||
CBDAFrequencyFilter * handler = new CBDAFrequencyFilter(hFile, NodeId);
|
CBDAFrequencyFilter * handler = new CBDAFrequencyFilter(pProperty, NodeId);
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
OutputDebugStringW(L"CBDAFrequencyFilter_fnConstructor\n");
|
OutputDebugStringW(L"CBDAFrequencyFilter_fnConstructor\n");
|
||||||
|
|
|
@ -9,8 +9,10 @@
|
||||||
|
|
||||||
#include "precomp.h"
|
#include "precomp.h"
|
||||||
|
|
||||||
|
#ifndef _MSC_VER
|
||||||
const GUID IID_IBDA_LNBInfo = {0x992cf102, 0x49f9, 0x4719, {0xa6, 0x64, 0xc4, 0xf2, 0x3e, 0x24, 0x08, 0xf4}};
|
const GUID IID_IBDA_LNBInfo = {0x992cf102, 0x49f9, 0x4719, {0xa6, 0x64, 0xc4, 0xf2, 0x3e, 0x24, 0x08, 0xf4}};
|
||||||
const GUID KSPROPSETID_BdaLNBInfo = {0x992cf102, 0x49f9, 0x4719, {0xa6, 0x64, 0xc4, 0xf2, 0x3e, 0x24, 0x8, 0xf4}};
|
const GUID KSPROPSETID_BdaLNBInfo = {0x992cf102, 0x49f9, 0x4719, {0xa6, 0x64, 0xc4, 0xf2, 0x3e, 0x24, 0x8, 0xf4}};
|
||||||
|
#endif
|
||||||
|
|
||||||
class CBDALNBInfo : public IBDA_LNBInfo
|
class CBDALNBInfo : public IBDA_LNBInfo
|
||||||
{
|
{
|
||||||
|
@ -41,12 +43,12 @@ public:
|
||||||
HRESULT STDMETHODCALLTYPE put_HighLowSwitchFrequency(ULONG ulSwitchFrequency);
|
HRESULT STDMETHODCALLTYPE put_HighLowSwitchFrequency(ULONG ulSwitchFrequency);
|
||||||
HRESULT STDMETHODCALLTYPE get_HighLowSwitchFrequency(ULONG *pulSwitchFrequency);
|
HRESULT STDMETHODCALLTYPE get_HighLowSwitchFrequency(ULONG *pulSwitchFrequency);
|
||||||
|
|
||||||
CBDALNBInfo(HANDLE hFile, ULONG NodeId) : m_Ref(0), m_hFile(hFile), m_NodeId(NodeId){};
|
CBDALNBInfo(IKsPropertySet *pProperty, ULONG NodeId) : m_Ref(0), m_pProperty(pProperty), m_NodeId(NodeId){};
|
||||||
~CBDALNBInfo(){};
|
~CBDALNBInfo(){};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
LONG m_Ref;
|
LONG m_Ref;
|
||||||
HANDLE m_hFile;
|
IKsPropertySet * m_pProperty;
|
||||||
ULONG m_NodeId;
|
ULONG m_NodeId;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -90,20 +92,17 @@ CBDALNBInfo::put_LocalOscilatorFrequencyLowBand(ULONG ulLOFLow)
|
||||||
{
|
{
|
||||||
KSP_NODE Node;
|
KSP_NODE Node;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
ULONG BytesReturned;
|
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaLNBInfo;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_LNB_LOF_LOW_BAND;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_TOPOLOGY;
|
|
||||||
Node.NodeId = m_NodeId;
|
Node.NodeId = m_NodeId;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), &ulLOFLow, sizeof(ULONG), &BytesReturned);
|
hr = m_pProperty->Set(KSPROPSETID_BdaLNBInfo, KSPROPERTY_BDA_LNB_LOF_LOW_BAND, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), &ulLOFLow, sizeof(LONG));
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CBDALNBInfo::put_LocalOscilatorFrequencyLowBand: m_NodeId %lu hr %lx, BytesReturned %lu\n", m_NodeId, hr, BytesReturned);
|
swprintf(Buffer, L"CBDALNBInfo::put_LocalOscilatorFrequencyLowBand: m_NodeId %lu hr %lx\n", m_NodeId, hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -123,20 +122,17 @@ CBDALNBInfo::put_LocalOscilatorFrequencyHighBand(ULONG ulLOFHigh)
|
||||||
{
|
{
|
||||||
KSP_NODE Node;
|
KSP_NODE Node;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
ULONG BytesReturned;
|
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaLNBInfo;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_LNB_LOF_HIGH_BAND;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_TOPOLOGY;
|
|
||||||
Node.NodeId = m_NodeId;
|
Node.NodeId = m_NodeId;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), &ulLOFHigh, sizeof(ULONG), &BytesReturned);
|
hr = m_pProperty->Set(KSPROPSETID_BdaLNBInfo, KSPROPERTY_BDA_LNB_LOF_HIGH_BAND, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), &ulLOFHigh, sizeof(ULONG));
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CBDALNBInfo::put_LocalOscilatorFrequencyHighBand: m_NodeId %lu hr %lx, BytesReturned %lu\n", m_NodeId, hr, BytesReturned);
|
swprintf(Buffer, L"CBDALNBInfo::put_LocalOscilatorFrequencyHighBand: m_NodeId %lu hr %lx\n", m_NodeId, hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -156,20 +152,17 @@ CBDALNBInfo::put_HighLowSwitchFrequency(ULONG ulSwitchFrequency)
|
||||||
{
|
{
|
||||||
KSP_NODE Node;
|
KSP_NODE Node;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
ULONG BytesReturned;
|
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaLNBInfo;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_LNB_SWITCH_FREQUENCY;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_TOPOLOGY;
|
|
||||||
Node.NodeId = m_NodeId;
|
Node.NodeId = m_NodeId;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), &ulSwitchFrequency, sizeof(ULONG), &BytesReturned);
|
hr = m_pProperty->Set(KSPROPSETID_BdaLNBInfo, KSPROPERTY_BDA_LNB_SWITCH_FREQUENCY, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), &ulSwitchFrequency, sizeof(ULONG));
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CBDALNBInfo::put_HighLowSwitchFrequency: m_NodeId %lu hr %lx, BytesReturned %lu\n", m_NodeId, hr, BytesReturned);
|
swprintf(Buffer, L"CBDALNBInfo::put_HighLowSwitchFrequency: m_NodeId %lu hr %lx\n", m_NodeId, hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -186,13 +179,13 @@ CBDALNBInfo::get_HighLowSwitchFrequency(ULONG *pulSwitchFrequency)
|
||||||
HRESULT
|
HRESULT
|
||||||
WINAPI
|
WINAPI
|
||||||
CBDALNBInfo_fnConstructor(
|
CBDALNBInfo_fnConstructor(
|
||||||
HANDLE hFile,
|
IKsPropertySet *pProperty,
|
||||||
ULONG NodeId,
|
ULONG NodeId,
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID * ppv)
|
LPVOID * ppv)
|
||||||
{
|
{
|
||||||
// construct device control
|
// construct device control
|
||||||
CBDALNBInfo * handler = new CBDALNBInfo(hFile, NodeId);
|
CBDALNBInfo * handler = new CBDALNBInfo(pProperty, NodeId);
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
OutputDebugStringW(L"CBDALNBInfo_fnConstructor\n");
|
OutputDebugStringW(L"CBDALNBInfo_fnConstructor\n");
|
||||||
|
|
|
@ -9,9 +9,12 @@
|
||||||
|
|
||||||
#include "precomp.h"
|
#include "precomp.h"
|
||||||
|
|
||||||
const GUID IID_IBDA_PinControl = {0x0DED49D5, 0xA8B7, 0x4d5d, {0x97, 0xA1, 0x12, 0xB0, 0xC1, 0x95, 0x87, 0x4D}};
|
#ifndef _MSC_VER
|
||||||
const GUID KSPROPSETID_BdaPinControl = {0x0ded49d5, 0xa8b7, 0x4d5d, {0x97, 0xa1, 0x12, 0xb0, 0xc1, 0x95, 0x87, 0x4d}};
|
const GUID KSPROPSETID_BdaPinControl = {0x0ded49d5, 0xa8b7, 0x4d5d, {0x97, 0xa1, 0x12, 0xb0, 0xc1, 0x95, 0x87, 0x4d}};
|
||||||
|
const GUID IID_IBDA_PinControl = {0x0DED49D5, 0xA8B7, 0x4d5d, {0x97, 0xA1, 0x12, 0xB0, 0xC1, 0x95, 0x87, 0x4D}};
|
||||||
const GUID IID_IPin = {0x56a86891, 0x0ad4, 0x11ce, {0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}};
|
const GUID IID_IPin = {0x56a86891, 0x0ad4, 0x11ce, {0xb0, 0x3a, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70}};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
class CBDAPinControl : public IBDA_PinControl
|
class CBDAPinControl : public IBDA_PinControl
|
||||||
{
|
{
|
||||||
|
@ -39,7 +42,7 @@ public:
|
||||||
HRESULT STDMETHODCALLTYPE RegistrationContext(ULONG *pulRegistrationCtx);
|
HRESULT STDMETHODCALLTYPE RegistrationContext(ULONG *pulRegistrationCtx);
|
||||||
|
|
||||||
|
|
||||||
CBDAPinControl(HANDLE hFile, IBDA_NetworkProvider * pProvider, IPin * pConnectedPin) : m_Ref(0), m_Handle(hFile), m_pProvider(pProvider), m_pConnectedPin(pConnectedPin){};
|
CBDAPinControl(HANDLE hFile, IBDA_NetworkProvider * pProvider, IPin * pConnectedPin, ULONG RegistrationCtx) : m_Ref(0), m_Handle(hFile), m_pProvider(pProvider), m_pConnectedPin(pConnectedPin), m_RegistrationCtx(RegistrationCtx){};
|
||||||
virtual ~CBDAPinControl()
|
virtual ~CBDAPinControl()
|
||||||
{
|
{
|
||||||
//m_pConnectedPin->Release();
|
//m_pConnectedPin->Release();
|
||||||
|
@ -51,6 +54,7 @@ protected:
|
||||||
HANDLE m_Handle;
|
HANDLE m_Handle;
|
||||||
IBDA_NetworkProvider * m_pProvider;
|
IBDA_NetworkProvider * m_pProvider;
|
||||||
IPin * m_pConnectedPin;
|
IPin * m_pConnectedPin;
|
||||||
|
ULONG m_RegistrationCtx;
|
||||||
};
|
};
|
||||||
|
|
||||||
HRESULT
|
HRESULT
|
||||||
|
@ -72,16 +76,7 @@ CBDAPinControl::QueryInterface(
|
||||||
reinterpret_cast<IBDA_PinControl*>(*Output)->AddRef();
|
reinterpret_cast<IBDA_PinControl*>(*Output)->AddRef();
|
||||||
return NOERROR;
|
return NOERROR;
|
||||||
}
|
}
|
||||||
|
DebugBreak();
|
||||||
#ifdef BDAPLGIN_TRACE
|
|
||||||
WCHAR Buffer[MAX_PATH];
|
|
||||||
LPOLESTR lpstr;
|
|
||||||
StringFromCLSID(refiid, &lpstr);
|
|
||||||
swprintf(Buffer, L"CBDAPinControl::QueryInterface: NoInterface for %s", lpstr);
|
|
||||||
OutputDebugStringW(Buffer);
|
|
||||||
CoTaskMemFree(lpstr);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return E_NOINTERFACE;
|
return E_NOINTERFACE;
|
||||||
}
|
}
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
|
@ -142,10 +137,98 @@ STDMETHODCALLTYPE
|
||||||
CBDAPinControl::RegistrationContext(ULONG *pulRegistrationCtx)
|
CBDAPinControl::RegistrationContext(ULONG *pulRegistrationCtx)
|
||||||
{
|
{
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
OutputDebugStringW(L"CBDAPinControl::RegistrationContext: NotImplemented\n");
|
OutputDebugStringW(L"CBDAPinControl::RegistrationContext\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
if (!pulRegistrationCtx)
|
||||||
|
{
|
||||||
|
// invalid argument
|
||||||
|
return E_POINTER;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_RegistrationCtx)
|
||||||
|
{
|
||||||
|
// is registered
|
||||||
|
*pulRegistrationCtx = m_RegistrationCtx;
|
||||||
|
return NOERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
//pin not registered
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------
|
||||||
|
HRESULT
|
||||||
|
GetNetworkProviderFromGraph(
|
||||||
|
IFilterGraph * pGraph,
|
||||||
|
IBDA_NetworkProvider ** pOutNetworkProvider)
|
||||||
|
{
|
||||||
|
IEnumFilters *pEnumFilters = NULL;
|
||||||
|
IBaseFilter * ppFilter[1];
|
||||||
|
IBDA_NetworkProvider * pNetworkProvider = NULL;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
|
// get IEnumFilters interface
|
||||||
|
hr = pGraph->EnumFilters(&pEnumFilters);
|
||||||
|
|
||||||
|
if (FAILED(hr))
|
||||||
|
{
|
||||||
|
//clean up
|
||||||
|
*pOutNetworkProvider = NULL;
|
||||||
|
return hr;
|
||||||
|
}
|
||||||
|
|
||||||
|
while(pEnumFilters->Next(1, ppFilter, NULL) == S_OK)
|
||||||
|
{
|
||||||
|
// check if that filter supports the IBDA_NetworkProvider interface
|
||||||
|
hr = ppFilter[0]->QueryInterface(IID_IBDA_NetworkProvider, (void**)&pNetworkProvider);
|
||||||
|
|
||||||
|
// release IBaseFilter
|
||||||
|
ppFilter[0]->Release();
|
||||||
|
|
||||||
|
if (SUCCEEDED(hr))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// release IEnumFilters interface
|
||||||
|
pEnumFilters->Release();
|
||||||
|
|
||||||
|
//store result
|
||||||
|
*pOutNetworkProvider = pNetworkProvider;
|
||||||
|
|
||||||
|
if (pNetworkProvider)
|
||||||
|
return S_OK;
|
||||||
|
else
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
CBDAPinControl_RealConstructor(
|
||||||
|
HANDLE hPin,
|
||||||
|
IBDA_NetworkProvider *pNetworkProvider,
|
||||||
|
IPin * pConnectedPin,
|
||||||
|
ULONG RegistrationCtx,
|
||||||
|
IUnknown * pUnkOuter,
|
||||||
|
REFIID riid,
|
||||||
|
LPVOID * ppv)
|
||||||
|
{
|
||||||
|
CBDAPinControl * handler = new CBDAPinControl(hPin, pNetworkProvider, pConnectedPin, RegistrationCtx);
|
||||||
|
|
||||||
|
#ifdef BDAPLGIN_TRACE
|
||||||
|
OutputDebugStringW(L"CBDAPinControl_fnConstructor\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (!handler)
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
|
if (FAILED(handler->QueryInterface(riid, ppv)))
|
||||||
|
{
|
||||||
|
/* not supported */
|
||||||
|
delete handler;
|
||||||
|
return E_NOINTERFACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NOERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT
|
HRESULT
|
||||||
|
@ -158,30 +241,20 @@ CBDAPinControl_fnConstructor(
|
||||||
IPin * pConnectedPin = NULL;
|
IPin * pConnectedPin = NULL;
|
||||||
IBDA_NetworkProvider * pNetworkProvider = NULL;
|
IBDA_NetworkProvider * pNetworkProvider = NULL;
|
||||||
HANDLE hFile = INVALID_HANDLE_VALUE;
|
HANDLE hFile = INVALID_HANDLE_VALUE;
|
||||||
|
|
||||||
#if 0
|
|
||||||
if (!IsEqualGUID(riid, IID_IUnknown))
|
|
||||||
{
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
|
||||||
OutputDebugStringW(L"CBDAPinControl_fnConstructor: Expected IUnknown\n");
|
|
||||||
#endif
|
|
||||||
return REGDB_E_CLASSNOTREG;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
IKsObject * pObject = NULL;
|
IKsObject * pObject = NULL;
|
||||||
IPin * pPin = NULL;
|
IPin * pPin = NULL;
|
||||||
IEnumFilters *pEnumFilters = NULL;
|
IUnknown * pUnknown = NULL;
|
||||||
|
|
||||||
IBaseFilter * ppFilter[1];
|
|
||||||
PIN_INFO PinInfo;
|
PIN_INFO PinInfo;
|
||||||
FILTER_INFO FilterInfo;
|
FILTER_INFO FilterInfo;
|
||||||
|
ULONG RegistrationCtx = 0;
|
||||||
|
|
||||||
if (!pUnkOuter)
|
if (!pUnkOuter)
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
|
|
||||||
|
OutputDebugStringW(L"CBDAPinControl_fnConstructor\n");
|
||||||
|
//DebugBreak();
|
||||||
|
|
||||||
// query for IKsObject interface
|
// query for IKsObject interface
|
||||||
hr = pUnkOuter->QueryInterface(IID_IKsObject, (void**)&pObject);
|
hr = pUnkOuter->QueryInterface(IID_IKsObject, (void**)&pObject);
|
||||||
|
|
||||||
|
@ -209,8 +282,15 @@ CBDAPinControl_fnConstructor(
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!PinInfo.pFilter)
|
||||||
|
{
|
||||||
|
//clean up
|
||||||
|
pObject->Release();
|
||||||
|
pPin->Release();
|
||||||
|
return hr;
|
||||||
|
}
|
||||||
|
|
||||||
// sanity checks
|
// sanity checks
|
||||||
assert(PinInfo.dir == PINDIR_OUTPUT);
|
|
||||||
assert(PinInfo.pFilter != NULL);
|
assert(PinInfo.pFilter != NULL);
|
||||||
|
|
||||||
// query filter info
|
// query filter info
|
||||||
|
@ -219,57 +299,80 @@ CBDAPinControl_fnConstructor(
|
||||||
// sanity check
|
// sanity check
|
||||||
assert(FilterInfo.pGraph != NULL);
|
assert(FilterInfo.pGraph != NULL);
|
||||||
|
|
||||||
// get IEnumFilters interface
|
// get network provider interface
|
||||||
hr = FilterInfo.pGraph->EnumFilters(&pEnumFilters);
|
hr = GetNetworkProviderFromGraph(FilterInfo.pGraph, &pNetworkProvider);
|
||||||
|
|
||||||
if (FAILED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
//clean up
|
if (PinInfo.dir == PINDIR_OUTPUT)
|
||||||
FilterInfo.pGraph->Release();
|
{
|
||||||
PinInfo.pFilter->Release();
|
// get connected pin handle
|
||||||
pObject->Release();
|
hr = pPin->ConnectedTo(&pConnectedPin);
|
||||||
pPin->Release();
|
if (SUCCEEDED(hr))
|
||||||
return hr;
|
{
|
||||||
|
// get file handle
|
||||||
|
hFile = pObject->KsGetObjectHandle();
|
||||||
|
if (hFile)
|
||||||
|
{
|
||||||
|
hr = CBDAPinControl_RealConstructor(hFile, pNetworkProvider, pConnectedPin, 0, pUnkOuter, riid, ppv);
|
||||||
|
if (SUCCEEDED(hr))
|
||||||
|
{
|
||||||
|
// set to null to prevent releasing
|
||||||
|
pNetworkProvider = NULL;
|
||||||
|
pConnectedPin = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// expected file handle
|
||||||
|
hr = E_UNEXPECTED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// get IUnknown from base filter
|
||||||
|
hr = PinInfo.pFilter->QueryInterface(IID_IUnknown, (void**)&pUnknown);
|
||||||
|
if (SUCCEEDED(hr))
|
||||||
|
{
|
||||||
|
// register device filter
|
||||||
|
hr = pNetworkProvider->RegisterDeviceFilter(pUnknown, &RegistrationCtx);
|
||||||
|
if (SUCCEEDED(hr))
|
||||||
|
{
|
||||||
|
// get file handle
|
||||||
|
hFile = pObject->KsGetObjectHandle();
|
||||||
|
if (hFile)
|
||||||
|
{
|
||||||
|
hr = CBDAPinControl_RealConstructor(hFile, pNetworkProvider, NULL, RegistrationCtx, pUnkOuter, riid, ppv);
|
||||||
|
if (SUCCEEDED(hr))
|
||||||
|
{
|
||||||
|
// set to null to prevent releasing
|
||||||
|
pNetworkProvider = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// expected file handle
|
||||||
|
hr = E_UNEXPECTED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WCHAR Buffer[100];
|
||||||
|
swprintf(Buffer, L"CBDAPinControl_fnConstructor failed to register filter with %lx\n", hr);
|
||||||
|
OutputDebugStringW(Buffer);
|
||||||
|
DebugBreak();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while(pEnumFilters->Next(1, ppFilter, NULL) == S_OK)
|
|
||||||
{
|
|
||||||
// check if that filter supports the IBDA_NetworkProvider interface
|
|
||||||
hr = ppFilter[0]->QueryInterface(IID_IBDA_NetworkProvider, (void**)&pNetworkProvider);
|
|
||||||
|
|
||||||
// release IBaseFilter
|
|
||||||
ppFilter[0]->Release();
|
|
||||||
|
|
||||||
if (SUCCEEDED(hr))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// release IEnumFilters interface
|
|
||||||
pEnumFilters->Release();
|
|
||||||
|
|
||||||
// release IFilterGraph interface
|
// release IFilterGraph interface
|
||||||
FilterInfo.pGraph->Release();
|
FilterInfo.pGraph->Release();
|
||||||
|
|
||||||
// release IBaseFilter interface
|
// release IBaseFilter interface
|
||||||
PinInfo.pFilter->Release();
|
PinInfo.pFilter->Release();
|
||||||
|
|
||||||
if (pNetworkProvider)
|
|
||||||
{
|
|
||||||
// get connected pin handle
|
|
||||||
hr = pPin->ConnectedTo(&pConnectedPin);
|
|
||||||
|
|
||||||
// get file handle
|
|
||||||
hFile = pObject->KsGetObjectHandle();
|
|
||||||
|
|
||||||
if (FAILED(hr) || hFile == INVALID_HANDLE_VALUE)
|
|
||||||
{
|
|
||||||
// pin not connected
|
|
||||||
pNetworkProvider->Release();
|
|
||||||
// set zero
|
|
||||||
pNetworkProvider = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// release IPin
|
// release IPin
|
||||||
pPin->Release();
|
pPin->Release();
|
||||||
|
|
||||||
|
@ -277,30 +380,23 @@ CBDAPinControl_fnConstructor(
|
||||||
pObject->Release();
|
pObject->Release();
|
||||||
|
|
||||||
|
|
||||||
if (pNetworkProvider == NULL)
|
if (pNetworkProvider)
|
||||||
{
|
{
|
||||||
// no network provider interface in graph
|
// release network provider
|
||||||
return E_NOINTERFACE;
|
pNetworkProvider->Release();
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
CBDAPinControl * handler = new CBDAPinControl(hFile, pNetworkProvider, pConnectedPin);
|
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
|
||||||
OutputDebugStringW(L"CBDAPinControl_fnConstructor");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
DebugBreak();
|
|
||||||
|
|
||||||
if (!handler)
|
|
||||||
return E_OUTOFMEMORY;
|
|
||||||
|
|
||||||
if (FAILED(handler->QueryInterface(riid, ppv)))
|
|
||||||
{
|
|
||||||
/* not supported */
|
|
||||||
delete handler;
|
|
||||||
return E_NOINTERFACE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return NOERROR;
|
if (pConnectedPin)
|
||||||
|
{
|
||||||
|
// release connected pin
|
||||||
|
pConnectedPin->Release();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pUnknown)
|
||||||
|
{
|
||||||
|
// release filter
|
||||||
|
pUnknown->Release();
|
||||||
|
}
|
||||||
|
|
||||||
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#ifndef PRECOMP_H__
|
#ifndef PRECOMP_H__
|
||||||
#define PRECOMP_H__
|
#define PRECOMP_H__
|
||||||
|
|
||||||
//#define BDAPLGIN_TRACE
|
#define BDAPLGIN_TRACE
|
||||||
#define BUILDING_KS
|
#define BUILDING_KS
|
||||||
#define _KSDDK_
|
#define _KSDDK_
|
||||||
#include <dshow.h>
|
#include <dshow.h>
|
||||||
|
@ -9,6 +9,7 @@
|
||||||
#include <ks.h>
|
#include <ks.h>
|
||||||
#define __STREAMS__
|
#define __STREAMS__
|
||||||
#include <ksproxy.h>
|
#include <ksproxy.h>
|
||||||
|
#include <ksmedia.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
#include <tchar.h>
|
#include <tchar.h>
|
||||||
|
@ -55,7 +56,6 @@ CBDAPinControl_fnConstructor(
|
||||||
HRESULT
|
HRESULT
|
||||||
WINAPI
|
WINAPI
|
||||||
CControlNode_fnConstructor(
|
CControlNode_fnConstructor(
|
||||||
HANDLE hFile,
|
|
||||||
IBaseFilter * pFilter,
|
IBaseFilter * pFilter,
|
||||||
ULONG NodeType,
|
ULONG NodeType,
|
||||||
ULONG PinId,
|
ULONG PinId,
|
||||||
|
@ -67,7 +67,7 @@ CControlNode_fnConstructor(
|
||||||
HRESULT
|
HRESULT
|
||||||
WINAPI
|
WINAPI
|
||||||
CBDAFrequencyFilter_fnConstructor(
|
CBDAFrequencyFilter_fnConstructor(
|
||||||
HANDLE hFile,
|
IKsPropertySet * pProperty,
|
||||||
ULONG NodeId,
|
ULONG NodeId,
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID * ppv);
|
LPVOID * ppv);
|
||||||
|
@ -77,7 +77,7 @@ CBDAFrequencyFilter_fnConstructor(
|
||||||
HRESULT
|
HRESULT
|
||||||
WINAPI
|
WINAPI
|
||||||
CBDASignalStatistics_fnConstructor(
|
CBDASignalStatistics_fnConstructor(
|
||||||
HANDLE hFile,
|
IKsPropertySet * pProperty,
|
||||||
ULONG NodeId,
|
ULONG NodeId,
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID * ppv);
|
LPVOID * ppv);
|
||||||
|
@ -87,7 +87,7 @@ CBDASignalStatistics_fnConstructor(
|
||||||
HRESULT
|
HRESULT
|
||||||
WINAPI
|
WINAPI
|
||||||
CBDALNBInfo_fnConstructor(
|
CBDALNBInfo_fnConstructor(
|
||||||
HANDLE hFile,
|
IKsPropertySet * pProperty,
|
||||||
ULONG NodeId,
|
ULONG NodeId,
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID * ppv);
|
LPVOID * ppv);
|
||||||
|
@ -96,9 +96,11 @@ CBDALNBInfo_fnConstructor(
|
||||||
HRESULT
|
HRESULT
|
||||||
WINAPI
|
WINAPI
|
||||||
CBDADigitalDemodulator_fnConstructor(
|
CBDADigitalDemodulator_fnConstructor(
|
||||||
HANDLE hFile,
|
IKsPropertySet * pProperty,
|
||||||
ULONG NodeId,
|
ULONG NodeId,
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID * ppv);
|
LPVOID * ppv);
|
||||||
|
|
||||||
|
extern const GUID IID_IKsObject;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -9,8 +9,10 @@
|
||||||
|
|
||||||
#include "precomp.h"
|
#include "precomp.h"
|
||||||
|
|
||||||
|
#ifndef _MSC_VER
|
||||||
const GUID IID_IBDA_SignalStatistics = {0x1347d106, 0xcf3a, 0x428a, {0xa5, 0xcb, 0xac, 0x0d, 0x9a, 0x2a, 0x43, 0x38}};
|
const GUID IID_IBDA_SignalStatistics = {0x1347d106, 0xcf3a, 0x428a, {0xa5, 0xcb, 0xac, 0x0d, 0x9a, 0x2a, 0x43, 0x38}};
|
||||||
const GUID KSPROPSETID_BdaSignalStats = {0x1347d106, 0xcf3a, 0x428a, {0xa5, 0xcb, 0xac, 0xd, 0x9a, 0x2a, 0x43, 0x38}};
|
const GUID KSPROPSETID_BdaSignalStats = {0x1347d106, 0xcf3a, 0x428a, {0xa5, 0xcb, 0xac, 0xd, 0x9a, 0x2a, 0x43, 0x38}};
|
||||||
|
#endif
|
||||||
|
|
||||||
class CBDASignalStatistics : public IBDA_SignalStatistics
|
class CBDASignalStatistics : public IBDA_SignalStatistics
|
||||||
{
|
{
|
||||||
|
@ -45,12 +47,12 @@ public:
|
||||||
HRESULT STDMETHODCALLTYPE put_SampleTime(LONG lmsSampleTime);
|
HRESULT STDMETHODCALLTYPE put_SampleTime(LONG lmsSampleTime);
|
||||||
HRESULT STDMETHODCALLTYPE get_SampleTime(LONG *plmsSampleTime);
|
HRESULT STDMETHODCALLTYPE get_SampleTime(LONG *plmsSampleTime);
|
||||||
|
|
||||||
CBDASignalStatistics(HANDLE hFile, ULONG NodeId) : m_Ref(0), m_hFile(hFile), m_NodeId(NodeId){};
|
CBDASignalStatistics(IKsPropertySet * pProperty, ULONG NodeId) : m_Ref(0), m_pProperty(pProperty), m_NodeId(NodeId){};
|
||||||
~CBDASignalStatistics(){};
|
~CBDASignalStatistics(){};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
LONG m_Ref;
|
LONG m_Ref;
|
||||||
HANDLE m_hFile;
|
IKsPropertySet * m_pProperty;
|
||||||
ULONG m_NodeId;
|
ULONG m_NodeId;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -75,7 +77,6 @@ CBDASignalStatistics::QueryInterface(
|
||||||
reinterpret_cast<IBDA_SignalStatistics*>(*Output)->AddRef();
|
reinterpret_cast<IBDA_SignalStatistics*>(*Output)->AddRef();
|
||||||
return NOERROR;
|
return NOERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
return E_NOINTERFACE;
|
return E_NOINTERFACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,13 +96,13 @@ CBDASignalStatistics::get_SignalStrength(LONG *plDbStrength)
|
||||||
ULONG BytesReturned;
|
ULONG BytesReturned;
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaSignalStats;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_SIGNAL_STRENGTH;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_TOPOLOGY;
|
|
||||||
Node.NodeId = (ULONG)-1;
|
Node.NodeId = (ULONG)-1;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
|
assert(m_pProperty);
|
||||||
|
|
||||||
|
hr = m_pProperty->Get(KSPROPSETID_BdaSignalStats, KSPROPERTY_BDA_SIGNAL_STRENGTH, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), plDbStrength, sizeof(LONG), &BytesReturned);
|
||||||
|
|
||||||
// perform request
|
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), plDbStrength, sizeof(LONG), &BytesReturned);
|
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
|
@ -128,13 +129,11 @@ CBDASignalStatistics::get_SignalQuality(LONG *plPercentQuality)
|
||||||
ULONG BytesReturned;
|
ULONG BytesReturned;
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaSignalStats;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_SIGNAL_QUALITY;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_TOPOLOGY;
|
|
||||||
Node.NodeId = (ULONG)-1;
|
Node.NodeId = (ULONG)-1;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), plPercentQuality, sizeof(LONG), &BytesReturned);
|
hr = m_pProperty->Get(KSPROPSETID_BdaSignalStats, KSPROPERTY_BDA_SIGNAL_QUALITY, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), plPercentQuality, sizeof(LONG), &BytesReturned);
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
|
@ -162,13 +161,12 @@ CBDASignalStatistics::get_SignalPresent(BOOLEAN *pfPresent)
|
||||||
ULONG BytesReturned;
|
ULONG BytesReturned;
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaSignalStats;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_SIGNAL_PRESENT;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_TOPOLOGY;
|
|
||||||
Node.NodeId = (ULONG)-1;
|
Node.NodeId = (ULONG)-1;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), &Present, sizeof(ULONG), &BytesReturned);
|
hr = m_pProperty->Get(KSPROPSETID_BdaSignalStats, KSPROPERTY_BDA_SIGNAL_PRESENT, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), &Present, sizeof(ULONG), &BytesReturned);
|
||||||
|
|
||||||
// store result
|
// store result
|
||||||
*pfPresent = Present;
|
*pfPresent = Present;
|
||||||
|
|
||||||
|
@ -198,13 +196,12 @@ CBDASignalStatistics::get_SignalLocked(BOOLEAN *pfLocked)
|
||||||
ULONG BytesReturned;
|
ULONG BytesReturned;
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaSignalStats;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_SIGNAL_LOCKED;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_TOPOLOGY;
|
|
||||||
Node.NodeId = (ULONG)-1;
|
Node.NodeId = (ULONG)-1;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), &Locked, sizeof(ULONG), &BytesReturned);
|
hr = m_pProperty->Get(KSPROPSETID_BdaSignalStats, KSPROPERTY_BDA_SIGNAL_LOCKED, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), &Locked, sizeof(ULONG), &BytesReturned);
|
||||||
|
|
||||||
*pfLocked = Locked;
|
*pfLocked = Locked;
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
|
@ -222,20 +219,17 @@ CBDASignalStatistics::put_SampleTime(LONG lmsSampleTime)
|
||||||
{
|
{
|
||||||
KSP_NODE Node;
|
KSP_NODE Node;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
ULONG BytesReturned;
|
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaSignalStats;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_SAMPLE_TIME;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_TOPOLOGY;
|
|
||||||
Node.NodeId = (ULONG)-1;
|
Node.NodeId = (ULONG)-1;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), &lmsSampleTime, sizeof(LONG), &BytesReturned);
|
hr = m_pProperty->Set(KSPROPSETID_BdaSignalStats, KSPROPERTY_BDA_SAMPLE_TIME, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), &lmsSampleTime, sizeof(LONG));
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CBDASignalStatistics::put_SampleTime: m_NodeId %lu hr %lx, BytesReturned %lu\n", m_NodeId, hr, BytesReturned);
|
swprintf(Buffer, L"CBDASignalStatistics::put_SampleTime: m_NodeId %lu hr %lx\n", m_NodeId, hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -251,13 +245,11 @@ CBDASignalStatistics::get_SampleTime(LONG *plmsSampleTime)
|
||||||
ULONG BytesReturned;
|
ULONG BytesReturned;
|
||||||
|
|
||||||
// setup request
|
// setup request
|
||||||
Node.Property.Set = KSPROPSETID_BdaSignalStats;
|
|
||||||
Node.Property.Id = KSPROPERTY_BDA_SAMPLE_TIME;
|
|
||||||
Node.Property.Flags = KSPROPERTY_TYPE_GET | KSPROPERTY_TYPE_TOPOLOGY;
|
|
||||||
Node.NodeId = (ULONG)-1;
|
Node.NodeId = (ULONG)-1;
|
||||||
|
Node.Reserved = 0;
|
||||||
|
|
||||||
// perform request
|
// perform request
|
||||||
hr = KsSynchronousDeviceControl(m_hFile, IOCTL_KS_PROPERTY, (PVOID)&Node, sizeof(KSP_NODE), plmsSampleTime, sizeof(LONG), &BytesReturned);
|
hr = m_pProperty->Get(KSPROPSETID_BdaSignalStats, KSPROPERTY_BDA_SAMPLE_TIME, &Node.NodeId, sizeof(KSP_NODE)-sizeof(KSPROPERTY), plmsSampleTime, sizeof(LONG), &BytesReturned);
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
|
@ -271,13 +263,13 @@ CBDASignalStatistics::get_SampleTime(LONG *plmsSampleTime)
|
||||||
HRESULT
|
HRESULT
|
||||||
WINAPI
|
WINAPI
|
||||||
CBDASignalStatistics_fnConstructor(
|
CBDASignalStatistics_fnConstructor(
|
||||||
HANDLE hFile,
|
IKsPropertySet * pProperty,
|
||||||
ULONG NodeId,
|
ULONG NodeId,
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID * ppv)
|
LPVOID * ppv)
|
||||||
{
|
{
|
||||||
// construct device control
|
// construct device control
|
||||||
CBDASignalStatistics * handler = new CBDASignalStatistics(hFile, NodeId);
|
CBDASignalStatistics * handler = new CBDASignalStatistics(pProperty, NodeId);
|
||||||
|
|
||||||
#ifdef BDAPLGIN_TRACE
|
#ifdef BDAPLGIN_TRACE
|
||||||
OutputDebugStringW(L"CBDASignalStatistics_fnConstructor\n");
|
OutputDebugStringW(L"CBDASignalStatistics_fnConstructor\n");
|
||||||
|
|
|
@ -140,7 +140,10 @@ CKsAllocator::SetProperties(
|
||||||
SYSTEM_INFO SystemInfo;
|
SYSTEM_INFO SystemInfo;
|
||||||
|
|
||||||
EnterCriticalSection(&m_CriticalSection);
|
EnterCriticalSection(&m_CriticalSection);
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsAllocator::SetProperties\n");
|
OutputDebugStringW(L"CKsAllocator::SetProperties\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!pRequest || !pActual)
|
if (!pRequest || !pActual)
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
|
@ -216,7 +219,9 @@ CKsAllocator::Commit()
|
||||||
//TODO integer overflow checks
|
//TODO integer overflow checks
|
||||||
EnterCriticalSection(&m_CriticalSection);
|
EnterCriticalSection(&m_CriticalSection);
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsAllocator::Commit\n");
|
OutputDebugStringW(L"CKsAllocator::Commit\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (m_Mode == KsAllocatorMode_Kernel)
|
if (m_Mode == KsAllocatorMode_Kernel)
|
||||||
{
|
{
|
||||||
|
@ -301,7 +306,9 @@ CKsAllocator::Decommit()
|
||||||
{
|
{
|
||||||
EnterCriticalSection(&m_CriticalSection);
|
EnterCriticalSection(&m_CriticalSection);
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsAllocator::Decommit\n");
|
OutputDebugStringW(L"CKsAllocator::Decommit\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (m_Mode == KsAllocatorMode_Kernel)
|
if (m_Mode == KsAllocatorMode_Kernel)
|
||||||
{
|
{
|
||||||
|
@ -340,7 +347,9 @@ CKsAllocator::GetBuffer(
|
||||||
DWORD dwFlags)
|
DWORD dwFlags)
|
||||||
{
|
{
|
||||||
IMediaSample * Sample = NULL;
|
IMediaSample * Sample = NULL;
|
||||||
OutputDebugStringW(L"CKsAllocator::GetBuffer\n");
|
|
||||||
|
if (!m_Commited)
|
||||||
|
return VFW_E_NOT_COMMITTED;
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -390,7 +399,9 @@ CKsAllocator::ReleaseBuffer(
|
||||||
{
|
{
|
||||||
EnterCriticalSection(&m_CriticalSection);
|
EnterCriticalSection(&m_CriticalSection);
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsAllocator::ReleaseBuffer\n");
|
OutputDebugStringW(L"CKsAllocator::ReleaseBuffer\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
// media sample always 1 ref count in free list
|
// media sample always 1 ref count in free list
|
||||||
pBuffer->AddRef();
|
pBuffer->AddRef();
|
||||||
|
@ -427,7 +438,10 @@ CKsAllocator::SetNotify(
|
||||||
IMemAllocatorNotifyCallbackTemp *pNotify)
|
IMemAllocatorNotifyCallbackTemp *pNotify)
|
||||||
{
|
{
|
||||||
EnterCriticalSection(&m_CriticalSection);
|
EnterCriticalSection(&m_CriticalSection);
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsAllocator::SetNotify\n");
|
OutputDebugStringW(L"CKsAllocator::SetNotify\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (pNotify)
|
if (pNotify)
|
||||||
pNotify->AddRef();
|
pNotify->AddRef();
|
||||||
|
@ -519,7 +533,9 @@ CKsAllocator::KsCreateAllocatorAndGetHandle(
|
||||||
KSALLOCATOR_FRAMING AllocatorFraming;
|
KSALLOCATOR_FRAMING AllocatorFraming;
|
||||||
HANDLE hPin;
|
HANDLE hPin;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsAllocator::KsCreateAllocatorAndGetHandle\n");
|
OutputDebugStringW(L"CKsAllocator::KsCreateAllocatorAndGetHandle\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (m_hAllocator)
|
if (m_hAllocator)
|
||||||
{
|
{
|
||||||
|
@ -588,7 +604,9 @@ CKsAllocator_Constructor(
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID * ppv)
|
LPVOID * ppv)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsAllocator_Constructor\n");
|
OutputDebugStringW(L"CKsAllocator_Constructor\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
CKsAllocator * handler = new CKsAllocator();
|
CKsAllocator * handler = new CKsAllocator();
|
||||||
|
|
||||||
|
|
|
@ -97,7 +97,9 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsBasicAudio::Stop()
|
CKsBasicAudio::Stop()
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +107,10 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsBasicAudio::Pause()
|
CKsBasicAudio::Pause()
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,7 +119,10 @@ STDMETHODCALLTYPE
|
||||||
CKsBasicAudio::Run(
|
CKsBasicAudio::Run(
|
||||||
REFERENCE_TIME tStart)
|
REFERENCE_TIME tStart)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,7 +131,9 @@ STDMETHODCALLTYPE
|
||||||
CKsBasicAudio::SetSyncSource(
|
CKsBasicAudio::SetSyncSource(
|
||||||
IReferenceClock *pClock)
|
IReferenceClock *pClock)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,7 +141,10 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsBasicAudio::NotifyGraphChange()
|
CKsBasicAudio::NotifyGraphChange()
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,7 +157,10 @@ STDMETHODCALLTYPE
|
||||||
CKsBasicAudio::GetTypeInfoCount(
|
CKsBasicAudio::GetTypeInfoCount(
|
||||||
UINT *pctinfo)
|
UINT *pctinfo)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,7 +171,9 @@ CKsBasicAudio::GetTypeInfo(
|
||||||
LCID lcid,
|
LCID lcid,
|
||||||
ITypeInfo **ppTInfo)
|
ITypeInfo **ppTInfo)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -168,7 +186,10 @@ CKsBasicAudio::GetIDsOfNames(
|
||||||
LCID lcid,
|
LCID lcid,
|
||||||
DISPID *rgDispId)
|
DISPID *rgDispId)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -184,7 +205,10 @@ CKsBasicAudio::Invoke(
|
||||||
EXCEPINFO *pExcepInfo,
|
EXCEPINFO *pExcepInfo,
|
||||||
UINT *puArgErr)
|
UINT *puArgErr)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,7 +221,10 @@ STDMETHODCALLTYPE
|
||||||
CKsBasicAudio::put_Volume(
|
CKsBasicAudio::put_Volume(
|
||||||
long lVolume)
|
long lVolume)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -207,7 +234,10 @@ STDMETHODCALLTYPE
|
||||||
CKsBasicAudio::get_Volume(
|
CKsBasicAudio::get_Volume(
|
||||||
long *plVolume)
|
long *plVolume)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,7 +247,10 @@ STDMETHODCALLTYPE
|
||||||
CKsBasicAudio::put_Balance(
|
CKsBasicAudio::put_Balance(
|
||||||
long lBalance)
|
long lBalance)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -227,7 +260,10 @@ STDMETHODCALLTYPE
|
||||||
CKsBasicAudio::get_Balance(
|
CKsBasicAudio::get_Balance(
|
||||||
long *plBalance)
|
long *plBalance)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -238,7 +274,9 @@ CKsBasicAudio_Constructor(
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID * ppv)
|
LPVOID * ppv)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsBasicAudio_Constructor\n");
|
OutputDebugStringW(L"CKsBasicAudio_Constructor\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
CKsBasicAudio * handler = new CKsBasicAudio();
|
CKsBasicAudio * handler = new CKsBasicAudio();
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,8 @@
|
||||||
const GUID KSCATEGORY_CLOCK = {0x53172480, 0x4791, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}};
|
const GUID KSCATEGORY_CLOCK = {0x53172480, 0x4791, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const GUID IID_IKsClockForwarder = {0x877e4352, 0x6fea, 0x11d0, {0xb8, 0x63, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1}};
|
||||||
|
|
||||||
DWORD WINAPI CKsClockForwarder_ThreadStartup(LPVOID lpParameter);
|
DWORD WINAPI CKsClockForwarder_ThreadStartup(LPVOID lpParameter);
|
||||||
|
|
||||||
class CKsClockForwarder : public IDistributorNotify,
|
class CKsClockForwarder : public IDistributorNotify,
|
||||||
|
@ -91,7 +93,8 @@ CKsClockForwarder::QueryInterface(
|
||||||
reinterpret_cast<IUnknown*>(*Output)->AddRef();
|
reinterpret_cast<IUnknown*>(*Output)->AddRef();
|
||||||
return NOERROR;
|
return NOERROR;
|
||||||
}
|
}
|
||||||
if (IsEqualGUID(refiid, IID_IKsObject))
|
if (IsEqualGUID(refiid, IID_IKsObject) ||
|
||||||
|
IsEqualGUID(refiid, IID_IKsClockForwarder))
|
||||||
{
|
{
|
||||||
*Output = (IKsObject*)(this);
|
*Output = (IKsObject*)(this);
|
||||||
reinterpret_cast<IKsObject*>(*Output)->AddRef();
|
reinterpret_cast<IKsObject*>(*Output)->AddRef();
|
||||||
|
@ -105,15 +108,6 @@ CKsClockForwarder::QueryInterface(
|
||||||
return NOERROR;
|
return NOERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
if (IsEqualGUID(refiid, IID_IKsClockForwarder))
|
|
||||||
{
|
|
||||||
*Output = PVOID(this);
|
|
||||||
reinterpret_cast<IKsObject*>(*Output)->AddRef();
|
|
||||||
return NOERROR;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return E_NOINTERFACE;
|
return E_NOINTERFACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,8 +120,13 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsClockForwarder::Stop()
|
CKsClockForwarder::Stop()
|
||||||
{
|
{
|
||||||
OutputDebugString("CKsClockForwarder::Stop\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
WCHAR Buffer[200];
|
||||||
|
swprintf(Buffer, L"CKsClockForwarder::Stop m_ThreadStarted %u m_PendingStop %u m_hThread %p m_hEvent %p m_Handle %p\n", m_ThreadStarted, m_PendingStop, m_hThread, m_hEvent, m_Handle);
|
||||||
|
OutputDebugStringW(Buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
m_Time = 0;
|
||||||
if (m_ThreadStarted)
|
if (m_ThreadStarted)
|
||||||
{
|
{
|
||||||
// signal pending stop
|
// signal pending stop
|
||||||
|
@ -166,7 +165,9 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsClockForwarder::Pause()
|
CKsClockForwarder::Pause()
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugString("CKsClockForwarder::Pause\n");
|
OutputDebugString("CKsClockForwarder::Pause\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!m_hEvent)
|
if (!m_hEvent)
|
||||||
{
|
{
|
||||||
|
@ -206,7 +207,9 @@ STDMETHODCALLTYPE
|
||||||
CKsClockForwarder::Run(
|
CKsClockForwarder::Run(
|
||||||
REFERENCE_TIME tStart)
|
REFERENCE_TIME tStart)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugString("CKsClockForwarder::Run\n");
|
OutputDebugString("CKsClockForwarder::Run\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
m_Time = tStart;
|
m_Time = tStart;
|
||||||
|
|
||||||
|
@ -233,7 +236,9 @@ STDMETHODCALLTYPE
|
||||||
CKsClockForwarder::SetSyncSource(
|
CKsClockForwarder::SetSyncSource(
|
||||||
IReferenceClock *pClock)
|
IReferenceClock *pClock)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugString("CKsClockForwarder::SetSyncSource\n");
|
OutputDebugString("CKsClockForwarder::SetSyncSource\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (pClock)
|
if (pClock)
|
||||||
pClock->AddRef();
|
pClock->AddRef();
|
||||||
|
@ -250,9 +255,11 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsClockForwarder::NotifyGraphChange()
|
CKsClockForwarder::NotifyGraphChange()
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugString("CKsClockForwarder::NotifyGraphChange\n");
|
OutputDebugString("CKsClockForwarder::NotifyGraphChange\n");
|
||||||
DebugBreak();
|
#endif
|
||||||
return E_NOTIMPL;
|
|
||||||
|
return NOERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------------------------
|
//-------------------------------------------------------------------
|
||||||
|
@ -282,6 +289,12 @@ CKsClockForwarder::SetClockState(KSSTATE State)
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
m_State = State;
|
m_State = State;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
|
WCHAR Buffer[100];
|
||||||
|
swprintf(Buffer, L"CKsClockForwarder::SetClockState m_State %u State %u hr %lx\n", m_State, State, hr);
|
||||||
|
OutputDebugStringW(Buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -330,14 +343,18 @@ CKsClockForwarder_Constructor(
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
HANDLE handle;
|
HANDLE handle;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsClockForwarder_Constructor\n");
|
OutputDebugStringW(L"CKsClockForwarder_Constructor\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
// open default clock
|
// open default clock
|
||||||
hr = KsOpenDefaultDevice(KSCATEGORY_CLOCK, GENERIC_READ | GENERIC_WRITE, &handle);
|
hr = KsOpenDefaultDevice(KSCATEGORY_CLOCK, GENERIC_READ | GENERIC_WRITE, &handle);
|
||||||
|
|
||||||
if (hr != NOERROR)
|
if (hr != NOERROR)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugString("CKsClockForwarder_Constructor failed to open device\n");
|
OutputDebugString("CKsClockForwarder_Constructor failed to open device\n");
|
||||||
|
#endif
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -102,7 +102,9 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CVPConfig::Stop()
|
CVPConfig::Stop()
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,7 +112,9 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CVPConfig::Pause()
|
CVPConfig::Pause()
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,7 +123,9 @@ STDMETHODCALLTYPE
|
||||||
CVPConfig::Run(
|
CVPConfig::Run(
|
||||||
REFERENCE_TIME tStart)
|
REFERENCE_TIME tStart)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,7 +134,9 @@ STDMETHODCALLTYPE
|
||||||
CVPConfig::SetSyncSource(
|
CVPConfig::SetSyncSource(
|
||||||
IReferenceClock *pClock)
|
IReferenceClock *pClock)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,7 +144,9 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CVPConfig::NotifyGraphChange()
|
CVPConfig::NotifyGraphChange()
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,7 +159,9 @@ CVPConfig::GetConnectInfo(
|
||||||
LPDWORD pdwNumConnectInfo,
|
LPDWORD pdwNumConnectInfo,
|
||||||
IN OUT LPDDVIDEOPORTCONNECT pddVPConnectInfo)
|
IN OUT LPDDVIDEOPORTCONNECT pddVPConnectInfo)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,7 +170,9 @@ STDMETHODCALLTYPE
|
||||||
CVPConfig::SetConnectInfo(
|
CVPConfig::SetConnectInfo(
|
||||||
DWORD dwChosenEntry)
|
DWORD dwChosenEntry)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,7 +181,9 @@ STDMETHODCALLTYPE
|
||||||
CVPConfig::GetVPDataInfo(
|
CVPConfig::GetVPDataInfo(
|
||||||
LPAMVPDATAINFO pamvpDataInfo)
|
LPAMVPDATAINFO pamvpDataInfo)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,7 +193,9 @@ CVPConfig::GetMaxPixelRate(
|
||||||
LPAMVPSIZE pamvpSize,
|
LPAMVPSIZE pamvpSize,
|
||||||
OUT LPDWORD pdwMaxPixelsPerSecond)
|
OUT LPDWORD pdwMaxPixelsPerSecond)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,7 +205,9 @@ CVPConfig::InformVPInputFormats(
|
||||||
DWORD dwNumFormats,
|
DWORD dwNumFormats,
|
||||||
IN LPDDPIXELFORMAT pDDPixelFormats)
|
IN LPDDPIXELFORMAT pDDPixelFormats)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,7 +217,9 @@ CVPConfig::GetVideoFormats(
|
||||||
LPDWORD pdwNumFormats,
|
LPDWORD pdwNumFormats,
|
||||||
IN OUT LPDDPIXELFORMAT pddPixelFormats)
|
IN OUT LPDDPIXELFORMAT pddPixelFormats)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -206,7 +228,9 @@ STDMETHODCALLTYPE
|
||||||
CVPConfig::SetVideoFormat(
|
CVPConfig::SetVideoFormat(
|
||||||
DWORD dwChosenEntry)
|
DWORD dwChosenEntry)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,7 +238,9 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CVPConfig::SetInvertPolarity()
|
CVPConfig::SetInvertPolarity()
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,7 +249,9 @@ STDMETHODCALLTYPE
|
||||||
CVPConfig::GetOverlaySurface(
|
CVPConfig::GetOverlaySurface(
|
||||||
LPDIRECTDRAWSURFACE* ppddOverlaySurface)
|
LPDIRECTDRAWSURFACE* ppddOverlaySurface)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,7 +260,9 @@ STDMETHODCALLTYPE
|
||||||
CVPConfig::SetDirectDrawKernelHandle(
|
CVPConfig::SetDirectDrawKernelHandle(
|
||||||
ULONG_PTR dwDDKernelHandle)
|
ULONG_PTR dwDDKernelHandle)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -241,7 +271,9 @@ STDMETHODCALLTYPE
|
||||||
CVPConfig::SetVideoPortID(
|
CVPConfig::SetVideoPortID(
|
||||||
IN DWORD dwVideoPortID)
|
IN DWORD dwVideoPortID)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -252,7 +284,9 @@ CVPConfig::SetDDSurfaceKernelHandles(
|
||||||
DWORD cHandles,
|
DWORD cHandles,
|
||||||
IN ULONG_PTR *rgDDKernelHandles)
|
IN ULONG_PTR *rgDDKernelHandles)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -264,7 +298,9 @@ CVPConfig::SetSurfaceParameters(
|
||||||
IN DWORD dwXOrigin,
|
IN DWORD dwXOrigin,
|
||||||
IN DWORD dwYOrigin)
|
IN DWORD dwYOrigin)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,7 +313,9 @@ STDMETHODCALLTYPE
|
||||||
CVPConfig::IsVPDecimationAllowed(
|
CVPConfig::IsVPDecimationAllowed(
|
||||||
LPBOOL pbIsDecimationAllowed)
|
LPBOOL pbIsDecimationAllowed)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -286,13 +324,13 @@ STDMETHODCALLTYPE
|
||||||
CVPConfig::SetScalingFactors(
|
CVPConfig::SetScalingFactors(
|
||||||
LPAMVPSIZE pamvpSize)
|
LPAMVPSIZE pamvpSize)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
HRESULT
|
HRESULT
|
||||||
WINAPI
|
WINAPI
|
||||||
CVPConfig_Constructor(
|
CVPConfig_Constructor(
|
||||||
|
@ -300,7 +338,9 @@ CVPConfig_Constructor(
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID * ppv)
|
LPVOID * ppv)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CVPConfig_Constructor\n");
|
OutputDebugStringW(L"CVPConfig_Constructor\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
CVPConfig * handler = new CVPConfig();
|
CVPConfig * handler = new CVPConfig();
|
||||||
|
|
||||||
|
|
|
@ -98,7 +98,9 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CVPVBIConfig::Stop()
|
CVPVBIConfig::Stop()
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,7 +108,9 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CVPVBIConfig::Pause()
|
CVPVBIConfig::Pause()
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,7 +119,9 @@ STDMETHODCALLTYPE
|
||||||
CVPVBIConfig::Run(
|
CVPVBIConfig::Run(
|
||||||
REFERENCE_TIME tStart)
|
REFERENCE_TIME tStart)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,7 +130,9 @@ STDMETHODCALLTYPE
|
||||||
CVPVBIConfig::SetSyncSource(
|
CVPVBIConfig::SetSyncSource(
|
||||||
IReferenceClock *pClock)
|
IReferenceClock *pClock)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,7 +140,9 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CVPVBIConfig::NotifyGraphChange()
|
CVPVBIConfig::NotifyGraphChange()
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,7 +155,9 @@ CVPVBIConfig::GetConnectInfo(
|
||||||
LPDWORD pdwNumConnectInfo,
|
LPDWORD pdwNumConnectInfo,
|
||||||
IN OUT LPDDVIDEOPORTCONNECT pddVPConnectInfo)
|
IN OUT LPDDVIDEOPORTCONNECT pddVPConnectInfo)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,7 +166,9 @@ STDMETHODCALLTYPE
|
||||||
CVPVBIConfig::SetConnectInfo(
|
CVPVBIConfig::SetConnectInfo(
|
||||||
DWORD dwChosenEntry)
|
DWORD dwChosenEntry)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,7 +177,9 @@ STDMETHODCALLTYPE
|
||||||
CVPVBIConfig::GetVPDataInfo(
|
CVPVBIConfig::GetVPDataInfo(
|
||||||
LPAMVPDATAINFO pamvpDataInfo)
|
LPAMVPDATAINFO pamvpDataInfo)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,7 +189,9 @@ CVPVBIConfig::GetMaxPixelRate(
|
||||||
LPAMVPSIZE pamvpSize,
|
LPAMVPSIZE pamvpSize,
|
||||||
OUT LPDWORD pdwMaxPixelsPerSecond)
|
OUT LPDWORD pdwMaxPixelsPerSecond)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -183,7 +201,9 @@ CVPVBIConfig::InformVPInputFormats(
|
||||||
DWORD dwNumFormats,
|
DWORD dwNumFormats,
|
||||||
IN LPDDPIXELFORMAT pDDPixelFormats)
|
IN LPDDPIXELFORMAT pDDPixelFormats)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -193,7 +213,9 @@ CVPVBIConfig::GetVideoFormats(
|
||||||
LPDWORD pdwNumFormats,
|
LPDWORD pdwNumFormats,
|
||||||
IN OUT LPDDPIXELFORMAT pddPixelFormats)
|
IN OUT LPDDPIXELFORMAT pddPixelFormats)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,7 +224,9 @@ STDMETHODCALLTYPE
|
||||||
CVPVBIConfig::SetVideoFormat(
|
CVPVBIConfig::SetVideoFormat(
|
||||||
DWORD dwChosenEntry)
|
DWORD dwChosenEntry)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,7 +234,9 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CVPVBIConfig::SetInvertPolarity()
|
CVPVBIConfig::SetInvertPolarity()
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -219,7 +245,9 @@ STDMETHODCALLTYPE
|
||||||
CVPVBIConfig::GetOverlaySurface(
|
CVPVBIConfig::GetOverlaySurface(
|
||||||
LPDIRECTDRAWSURFACE* ppddOverlaySurface)
|
LPDIRECTDRAWSURFACE* ppddOverlaySurface)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,7 +256,9 @@ STDMETHODCALLTYPE
|
||||||
CVPVBIConfig::SetDirectDrawKernelHandle(
|
CVPVBIConfig::SetDirectDrawKernelHandle(
|
||||||
ULONG_PTR dwDDKernelHandle)
|
ULONG_PTR dwDDKernelHandle)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,7 +267,9 @@ STDMETHODCALLTYPE
|
||||||
CVPVBIConfig::SetVideoPortID(
|
CVPVBIConfig::SetVideoPortID(
|
||||||
IN DWORD dwVideoPortID)
|
IN DWORD dwVideoPortID)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -248,7 +280,9 @@ CVPVBIConfig::SetDDSurfaceKernelHandles(
|
||||||
DWORD cHandles,
|
DWORD cHandles,
|
||||||
IN ULONG_PTR *rgDDKernelHandles)
|
IN ULONG_PTR *rgDDKernelHandles)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,7 +294,9 @@ CVPVBIConfig::SetSurfaceParameters(
|
||||||
IN DWORD dwXOrigin,
|
IN DWORD dwXOrigin,
|
||||||
IN DWORD dwYOrigin)
|
IN DWORD dwYOrigin)
|
||||||
{
|
{
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -272,7 +308,9 @@ CVPVBIConfig_Constructor(
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID * ppv)
|
LPVOID * ppv)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CVPVBIConfig_Constructor\n");
|
OutputDebugStringW(L"CVPVBIConfig_Constructor\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
CVPVBIConfig * handler = new CVPVBIConfig();
|
CVPVBIConfig * handler = new CVPVBIConfig();
|
||||||
|
|
||||||
|
|
|
@ -103,7 +103,9 @@ CKsDataTypeHandler::KsIsMediaTypeInRanges(
|
||||||
ULONG Index;
|
ULONG Index;
|
||||||
HRESULT hr = S_FALSE;
|
HRESULT hr = S_FALSE;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsDataTypeHandler::KsIsMediaTypeInRanges\n");
|
OutputDebugStringW(L"CKsDataTypeHandler::KsIsMediaTypeInRanges\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
DataList = (PKSMULTIPLE_ITEM)DataRanges;
|
DataList = (PKSMULTIPLE_ITEM)DataRanges;
|
||||||
DataRange = (PKSDATARANGE)(DataList + 1);
|
DataRange = (PKSDATARANGE)(DataList + 1);
|
||||||
|
@ -187,7 +189,9 @@ STDMETHODCALLTYPE
|
||||||
CKsDataTypeHandler::KsSetMediaType(
|
CKsDataTypeHandler::KsSetMediaType(
|
||||||
IN const AM_MEDIA_TYPE* AmMediaType)
|
IN const AM_MEDIA_TYPE* AmMediaType)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugString("CKsDataTypeHandler::KsSetMediaType\n");
|
OutputDebugString("CKsDataTypeHandler::KsSetMediaType\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (m_Type)
|
if (m_Type)
|
||||||
{
|
{
|
||||||
|
@ -228,7 +232,10 @@ CKsDataTypeHandler_Constructor (
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID * ppv)
|
LPVOID * ppv)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsDataTypeHandler_Constructor\n");
|
OutputDebugStringW(L"CKsDataTypeHandler_Constructor\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
CKsDataTypeHandler * handler = new CKsDataTypeHandler();
|
CKsDataTypeHandler * handler = new CKsDataTypeHandler();
|
||||||
|
|
||||||
if (!handler)
|
if (!handler)
|
||||||
|
|
|
@ -64,13 +64,6 @@ CEnumMediaTypes::QueryInterface(
|
||||||
return NOERROR;
|
return NOERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
WCHAR Buffer[MAX_PATH];
|
|
||||||
LPOLESTR lpstr;
|
|
||||||
StringFromCLSID(refiid, &lpstr);
|
|
||||||
swprintf(Buffer, L"CEnumMediaTypes::QueryInterface: NoInterface for %s\n", lpstr);
|
|
||||||
OutputDebugStringW(Buffer);
|
|
||||||
CoTaskMemFree(lpstr);
|
|
||||||
|
|
||||||
return E_NOINTERFACE;
|
return E_NOINTERFACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -171,7 +164,9 @@ STDMETHODCALLTYPE
|
||||||
CEnumMediaTypes::Clone(
|
CEnumMediaTypes::Clone(
|
||||||
IEnumMediaTypes **ppEnum)
|
IEnumMediaTypes **ppEnum)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CEnumMediaTypes::Clone : NotImplemented\n");
|
OutputDebugStringW(L"CEnumMediaTypes::Clone : NotImplemented\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,7 +184,7 @@ CEnumMediaTypes_fnConstructor(
|
||||||
WCHAR Buffer[MAX_PATH];
|
WCHAR Buffer[MAX_PATH];
|
||||||
LPOLESTR lpstr;
|
LPOLESTR lpstr;
|
||||||
StringFromCLSID(riid, &lpstr);
|
StringFromCLSID(riid, &lpstr);
|
||||||
swprintf(Buffer, L"CEnumMediaTypes_fnConstructor riid %s pUnknown %p\n", lpstr, pUnknown);
|
swprintf(Buffer, L"CEnumMediaTypes_fnConstructor riid %s\n", lpstr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -132,7 +132,10 @@ STDMETHODCALLTYPE
|
||||||
CEnumPins::Clone(
|
CEnumPins::Clone(
|
||||||
IEnumPins **ppEnum)
|
IEnumPins **ppEnum)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CEnumPins::Clone : NotImplemented\n");
|
OutputDebugStringW(L"CEnumPins::Clone : NotImplemented\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,6 +62,8 @@ class CInputPin : public IPin,
|
||||||
public ISpecifyPropertyPages
|
public ISpecifyPropertyPages
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
typedef std::vector<IUnknown *>ProxyPluginVector;
|
||||||
|
|
||||||
STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
|
STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
|
||||||
|
|
||||||
STDMETHODIMP_(ULONG) AddRef()
|
STDMETHODIMP_(ULONG) AddRef()
|
||||||
|
@ -170,14 +172,15 @@ public:
|
||||||
HRESULT STDMETHODCALLTYPE CheckFormat(const AM_MEDIA_TYPE *pmt);
|
HRESULT STDMETHODCALLTYPE CheckFormat(const AM_MEDIA_TYPE *pmt);
|
||||||
HRESULT STDMETHODCALLTYPE CreatePin(const AM_MEDIA_TYPE *pmt);
|
HRESULT STDMETHODCALLTYPE CreatePin(const AM_MEDIA_TYPE *pmt);
|
||||||
HRESULT STDMETHODCALLTYPE CreatePinHandle(PKSPIN_MEDIUM Medium, PKSPIN_INTERFACE Interface, const AM_MEDIA_TYPE *pmt);
|
HRESULT STDMETHODCALLTYPE CreatePinHandle(PKSPIN_MEDIUM Medium, PKSPIN_INTERFACE Interface, const AM_MEDIA_TYPE *pmt);
|
||||||
CInputPin(IBaseFilter * ParentFilter, LPCWSTR PinName, HANDLE hFilter, ULONG PinId, KSPIN_COMMUNICATION Communication);
|
HRESULT STDMETHODCALLTYPE GetSupportedSets(LPGUID * pOutGuid, PULONG NumGuids);
|
||||||
|
HRESULT STDMETHODCALLTYPE LoadProxyPlugins(LPGUID pGuids, ULONG NumGuids);
|
||||||
|
CInputPin(IBaseFilter * ParentFilter, LPCWSTR PinName, ULONG PinId, KSPIN_COMMUNICATION Communication);
|
||||||
virtual ~CInputPin(){};
|
virtual ~CInputPin(){};
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
LONG m_Ref;
|
LONG m_Ref;
|
||||||
IBaseFilter * m_ParentFilter;
|
IBaseFilter * m_ParentFilter;
|
||||||
LPCWSTR m_PinName;
|
LPCWSTR m_PinName;
|
||||||
HANDLE m_hFilter;
|
|
||||||
HANDLE m_hPin;
|
HANDLE m_hPin;
|
||||||
ULONG m_PinId;
|
ULONG m_PinId;
|
||||||
IMemAllocator * m_MemAllocator;
|
IMemAllocator * m_MemAllocator;
|
||||||
|
@ -196,17 +199,16 @@ protected:
|
||||||
LPWSTR m_FilterName;
|
LPWSTR m_FilterName;
|
||||||
FRAMING_PROP m_FramingProp[4];
|
FRAMING_PROP m_FramingProp[4];
|
||||||
PKSALLOCATOR_FRAMING_EX m_FramingEx[4];
|
PKSALLOCATOR_FRAMING_EX m_FramingEx[4];
|
||||||
|
ProxyPluginVector m_Plugins;
|
||||||
};
|
};
|
||||||
|
|
||||||
CInputPin::CInputPin(
|
CInputPin::CInputPin(
|
||||||
IBaseFilter * ParentFilter,
|
IBaseFilter * ParentFilter,
|
||||||
LPCWSTR PinName,
|
LPCWSTR PinName,
|
||||||
HANDLE hFilter,
|
|
||||||
ULONG PinId,
|
ULONG PinId,
|
||||||
KSPIN_COMMUNICATION Communication) : m_Ref(0),
|
KSPIN_COMMUNICATION Communication) : m_Ref(0),
|
||||||
m_ParentFilter(ParentFilter),
|
m_ParentFilter(ParentFilter),
|
||||||
m_PinName(PinName),
|
m_PinName(PinName),
|
||||||
m_hFilter(hFilter),
|
|
||||||
m_hPin(INVALID_HANDLE_VALUE),
|
m_hPin(INVALID_HANDLE_VALUE),
|
||||||
m_PinId(PinId),
|
m_PinId(PinId),
|
||||||
m_MemAllocator(0),
|
m_MemAllocator(0),
|
||||||
|
@ -218,13 +220,27 @@ CInputPin::CInputPin(
|
||||||
m_KsAllocatorEx(0),
|
m_KsAllocatorEx(0),
|
||||||
m_PipeAllocatorFlag(0),
|
m_PipeAllocatorFlag(0),
|
||||||
m_bPinBusCacheInitialized(0),
|
m_bPinBusCacheInitialized(0),
|
||||||
m_FilterName(0)
|
m_FilterName(0),
|
||||||
|
m_Plugins()
|
||||||
{
|
{
|
||||||
ZeroMemory(m_FramingProp, sizeof(m_FramingProp));
|
ZeroMemory(m_FramingProp, sizeof(m_FramingProp));
|
||||||
ZeroMemory(m_FramingEx, sizeof(m_FramingEx));
|
ZeroMemory(m_FramingEx, sizeof(m_FramingEx));
|
||||||
|
|
||||||
|
HRESULT hr;
|
||||||
|
IKsObject * KsObjectParent;
|
||||||
|
HANDLE hFilter;
|
||||||
|
|
||||||
|
hr = m_ParentFilter->QueryInterface(IID_IKsObject, (LPVOID*)&KsObjectParent);
|
||||||
|
assert(hr == S_OK);
|
||||||
|
|
||||||
|
hFilter = KsObjectParent->KsGetObjectHandle();
|
||||||
|
assert(hFilter);
|
||||||
|
|
||||||
|
KsObjectParent->Release();
|
||||||
|
|
||||||
|
|
||||||
ZeroMemory(&m_MediaFormat, sizeof(AM_MEDIA_TYPE));
|
ZeroMemory(&m_MediaFormat, sizeof(AM_MEDIA_TYPE));
|
||||||
HRESULT hr = KsGetMediaType(0, &m_MediaFormat, m_hFilter, m_PinId);
|
hr = KsGetMediaType(0, &m_MediaFormat, hFilter, m_PinId);
|
||||||
assert(hr == S_OK);
|
assert(hr == S_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -346,7 +362,10 @@ CInputPin::Notify(
|
||||||
IBaseFilter *pSelf,
|
IBaseFilter *pSelf,
|
||||||
Quality q)
|
Quality q)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::Notify NotImplemented\n");
|
OutputDebugStringW(L"CInputPin::Notify NotImplemented\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -355,7 +374,10 @@ STDMETHODCALLTYPE
|
||||||
CInputPin::SetSink(
|
CInputPin::SetSink(
|
||||||
IQualityControl *piqc)
|
IQualityControl *piqc)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::SetSink NotImplemented\n");
|
OutputDebugStringW(L"CInputPin::SetSink NotImplemented\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -368,7 +390,10 @@ STDMETHODCALLTYPE
|
||||||
CInputPin::KsAddAggregate(
|
CInputPin::KsAddAggregate(
|
||||||
IN REFGUID AggregateClass)
|
IN REFGUID AggregateClass)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::KsAddAggregate NotImplemented\n");
|
OutputDebugStringW(L"CInputPin::KsAddAggregate NotImplemented\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -377,7 +402,10 @@ STDMETHODCALLTYPE
|
||||||
CInputPin::KsRemoveAggregate(
|
CInputPin::KsRemoveAggregate(
|
||||||
REFGUID AggregateClass)
|
REFGUID AggregateClass)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::KsRemoveAggregate NotImplemented\n");
|
OutputDebugStringW(L"CInputPin::KsRemoveAggregate NotImplemented\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -401,7 +429,10 @@ CInputPin::Backout(
|
||||||
IPin *ppinOut,
|
IPin *ppinOut,
|
||||||
IGraphBuilder *pGraph)
|
IGraphBuilder *pGraph)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::Backout\n");
|
OutputDebugStringW(L"CInputPin::Backout\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -414,7 +445,10 @@ STDMETHODCALLTYPE
|
||||||
CInputPin::KsPinFactory(
|
CInputPin::KsPinFactory(
|
||||||
ULONG* PinFactory)
|
ULONG* PinFactory)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::KsPinFactory\n");
|
OutputDebugStringW(L"CInputPin::KsPinFactory\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
*PinFactory = m_PinId;
|
*PinFactory = m_PinId;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
@ -590,7 +624,10 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CInputPin::GetAllocator(IMemAllocator **ppAllocator)
|
CInputPin::GetAllocator(IMemAllocator **ppAllocator)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::GetAllocator\n");
|
OutputDebugStringW(L"CInputPin::GetAllocator\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return VFW_E_NO_ALLOCATOR;
|
return VFW_E_NO_ALLOCATOR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -598,13 +635,16 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CInputPin::NotifyAllocator(IMemAllocator *pAllocator, BOOL bReadOnly)
|
CInputPin::NotifyAllocator(IMemAllocator *pAllocator, BOOL bReadOnly)
|
||||||
{
|
{
|
||||||
WCHAR Buffer[100];
|
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
ALLOCATOR_PROPERTIES Properties;
|
ALLOCATOR_PROPERTIES Properties;
|
||||||
|
|
||||||
hr = pAllocator->GetProperties(&Properties);
|
hr = pAllocator->GetProperties(&Properties);
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CInputPin::NotifyAllocator hr %lx bReadOnly, %u cbAlign %u cbBuffer %u cbPrefix %u cBuffers %u\n", hr, bReadOnly, Properties.cbAlign, Properties.cbBuffer, Properties.cbPrefix, Properties.cBuffers);
|
swprintf(Buffer, L"CInputPin::NotifyAllocator hr %lx bReadOnly, %u cbAlign %u cbBuffer %u cbPrefix %u cBuffers %u\n", hr, bReadOnly, Properties.cbAlign, Properties.cbBuffer, Properties.cbPrefix, Properties.cBuffers);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (pAllocator)
|
if (pAllocator)
|
||||||
{
|
{
|
||||||
|
@ -645,9 +685,11 @@ CInputPin::GetAllocatorRequirements(ALLOCATOR_PROPERTIES *pProps)
|
||||||
else
|
else
|
||||||
hr = E_NOTIMPL;
|
hr = E_NOTIMPL;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CInputPin::GetAllocatorRequirements hr %lx m_hPin %p cBuffers %u cbBuffer %u cbAlign %u cbPrefix %u\n", hr, m_hPin, pProps->cBuffers, pProps->cbBuffer, pProps->cbAlign, pProps->cbPrefix);
|
swprintf(Buffer, L"CInputPin::GetAllocatorRequirements hr %lx m_hPin %p cBuffers %u cbBuffer %u cbAlign %u cbPrefix %u\n", hr, m_hPin, pProps->cBuffers, pProps->cbBuffer, pProps->cbAlign, pProps->cbPrefix);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
@ -656,8 +698,11 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CInputPin::Receive(IMediaSample *pSample)
|
CInputPin::Receive(IMediaSample *pSample)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::Receive NotImplemented\n");
|
OutputDebugStringW(L"CInputPin::Receive NotImplemented\n");
|
||||||
DebugBreak();
|
DebugBreak();
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -665,8 +710,11 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CInputPin::ReceiveMultiple(IMediaSample **pSamples, long nSamples, long *nSamplesProcessed)
|
CInputPin::ReceiveMultiple(IMediaSample **pSamples, long nSamples, long *nSamplesProcessed)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::ReceiveMultiple NotImplemented\n");
|
OutputDebugStringW(L"CInputPin::ReceiveMultiple NotImplemented\n");
|
||||||
DebugBreak();
|
DebugBreak();
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -674,8 +722,11 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CInputPin::ReceiveCanBlock( void)
|
CInputPin::ReceiveCanBlock( void)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::ReceiveCanBlock NotImplemented\n");
|
OutputDebugStringW(L"CInputPin::ReceiveCanBlock NotImplemented\n");
|
||||||
DebugBreak();
|
DebugBreak();
|
||||||
|
#endif
|
||||||
|
|
||||||
return S_FALSE;
|
return S_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -688,7 +739,22 @@ STDMETHODCALLTYPE
|
||||||
CInputPin::KsQueryMediums(
|
CInputPin::KsQueryMediums(
|
||||||
PKSMULTIPLE_ITEM* MediumList)
|
PKSMULTIPLE_ITEM* MediumList)
|
||||||
{
|
{
|
||||||
return KsGetMultiplePinFactoryItems(m_hFilter, m_PinId, KSPROPERTY_PIN_MEDIUMS, (PVOID*)MediumList);
|
HRESULT hr;
|
||||||
|
IKsObject * KsObjectParent;
|
||||||
|
HANDLE hFilter;
|
||||||
|
|
||||||
|
hr = m_ParentFilter->QueryInterface(IID_IKsObject, (LPVOID*)&KsObjectParent);
|
||||||
|
if (FAILED(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
|
hFilter = KsObjectParent->KsGetObjectHandle();
|
||||||
|
|
||||||
|
KsObjectParent->Release();
|
||||||
|
|
||||||
|
if (!hFilter)
|
||||||
|
return E_HANDLE;
|
||||||
|
|
||||||
|
return KsGetMultiplePinFactoryItems(hFilter, m_PinId, KSPROPERTY_PIN_MEDIUMS, (PVOID*)MediumList);
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT
|
HRESULT
|
||||||
|
@ -696,7 +762,22 @@ STDMETHODCALLTYPE
|
||||||
CInputPin::KsQueryInterfaces(
|
CInputPin::KsQueryInterfaces(
|
||||||
PKSMULTIPLE_ITEM* InterfaceList)
|
PKSMULTIPLE_ITEM* InterfaceList)
|
||||||
{
|
{
|
||||||
return KsGetMultiplePinFactoryItems(m_hFilter, m_PinId, KSPROPERTY_PIN_INTERFACES, (PVOID*)InterfaceList);
|
HRESULT hr;
|
||||||
|
IKsObject * KsObjectParent;
|
||||||
|
HANDLE hFilter;
|
||||||
|
|
||||||
|
hr = m_ParentFilter->QueryInterface(IID_IKsObject, (LPVOID*)&KsObjectParent);
|
||||||
|
if (FAILED(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
|
hFilter = KsObjectParent->KsGetObjectHandle();
|
||||||
|
|
||||||
|
KsObjectParent->Release();
|
||||||
|
|
||||||
|
if (!hFilter)
|
||||||
|
return E_HANDLE;
|
||||||
|
|
||||||
|
return KsGetMultiplePinFactoryItems(hFilter, m_PinId, KSPROPERTY_PIN_INTERFACES, (PVOID*)InterfaceList);
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT
|
HRESULT
|
||||||
|
@ -838,7 +919,10 @@ CInputPin::KsQualityNotify(
|
||||||
ULONG Proportion,
|
ULONG Proportion,
|
||||||
REFERENCE_TIME TimeDelta)
|
REFERENCE_TIME TimeDelta)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::KsQualityNotify NotImplemented\n");
|
OutputDebugStringW(L"CInputPin::KsQualityNotify NotImplemented\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
DebugBreak();
|
DebugBreak();
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
@ -853,7 +937,9 @@ CInputPin::KsNotifyError(
|
||||||
IMediaSample* Sample,
|
IMediaSample* Sample,
|
||||||
HRESULT hr)
|
HRESULT hr)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::KsNotifyError NotImplemented\n");
|
OutputDebugStringW(L"CInputPin::KsNotifyError NotImplemented\n");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1026,8 +1112,10 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CInputPin::Connect(IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
|
CInputPin::Connect(IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::Connect NotImplemented\n");
|
OutputDebugStringW(L"CInputPin::Connect NotImplemented\n");
|
||||||
DebugBreak();
|
DebugBreak();
|
||||||
|
#endif
|
||||||
return NOERROR;
|
return NOERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1078,7 +1166,10 @@ CInputPin::Disconnect( void)
|
||||||
m_Pin->Release();
|
m_Pin->Release();
|
||||||
m_Pin = NULL;
|
m_Pin = NULL;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::Disconnect\n");
|
OutputDebugStringW(L"CInputPin::Disconnect\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
HRESULT
|
HRESULT
|
||||||
|
@ -1106,8 +1197,11 @@ CInputPin::ConnectionMediaType(AM_MEDIA_TYPE *pmt)
|
||||||
if (!m_Pin)
|
if (!m_Pin)
|
||||||
return VFW_E_NOT_CONNECTED;
|
return VFW_E_NOT_CONNECTED;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::ConnectionMediaType NotImplemented\n");
|
OutputDebugStringW(L"CInputPin::ConnectionMediaType NotImplemented\n");
|
||||||
DebugBreak();
|
DebugBreak();
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
HRESULT
|
HRESULT
|
||||||
|
@ -1159,9 +1253,23 @@ CInputPin::EnumMediaTypes(IEnumMediaTypes **ppEnum)
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
ULONG MediaTypeCount = 0, Index;
|
ULONG MediaTypeCount = 0, Index;
|
||||||
AM_MEDIA_TYPE * MediaTypes;
|
AM_MEDIA_TYPE * MediaTypes;
|
||||||
|
IKsObject * KsObjectParent;
|
||||||
|
HANDLE hFilter;
|
||||||
|
|
||||||
|
hr = m_ParentFilter->QueryInterface(IID_IKsObject, (LPVOID*)&KsObjectParent);
|
||||||
|
if (FAILED(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
|
hFilter = KsObjectParent->KsGetObjectHandle();
|
||||||
|
|
||||||
|
KsObjectParent->Release();
|
||||||
|
|
||||||
|
if (!hFilter)
|
||||||
|
return E_HANDLE;
|
||||||
|
|
||||||
|
|
||||||
// query media type count
|
// query media type count
|
||||||
hr = KsGetMediaTypeCount(m_hFilter, m_PinId, &MediaTypeCount);
|
hr = KsGetMediaTypeCount(hFilter, m_PinId, &MediaTypeCount);
|
||||||
if (FAILED(hr) || !MediaTypeCount)
|
if (FAILED(hr) || !MediaTypeCount)
|
||||||
return hr;
|
return hr;
|
||||||
|
|
||||||
|
@ -1179,7 +1287,7 @@ CInputPin::EnumMediaTypes(IEnumMediaTypes **ppEnum)
|
||||||
for(Index = 0; Index < MediaTypeCount; Index++)
|
for(Index = 0; Index < MediaTypeCount; Index++)
|
||||||
{
|
{
|
||||||
// get media type
|
// get media type
|
||||||
hr = KsGetMediaType(Index, &MediaTypes[Index], m_hFilter, m_PinId);
|
hr = KsGetMediaType(Index, &MediaTypes[Index], hFilter, m_PinId);
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
{
|
{
|
||||||
// failed
|
// failed
|
||||||
|
@ -1195,35 +1303,45 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CInputPin::QueryInternalConnections(IPin **apPin, ULONG *nPin)
|
CInputPin::QueryInternalConnections(IPin **apPin, ULONG *nPin)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::QueryInternalConnections NotImplemented\n");
|
OutputDebugStringW(L"CInputPin::QueryInternalConnections NotImplemented\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
HRESULT
|
HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CInputPin::EndOfStream( void)
|
CInputPin::EndOfStream( void)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::EndOfStream NotImplemented\n");
|
OutputDebugStringW(L"CInputPin::EndOfStream NotImplemented\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
HRESULT
|
HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CInputPin::BeginFlush( void)
|
CInputPin::BeginFlush( void)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::BeginFlush NotImplemented\n");
|
OutputDebugStringW(L"CInputPin::BeginFlush NotImplemented\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
HRESULT
|
HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CInputPin::EndFlush( void)
|
CInputPin::EndFlush( void)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::EndFlush NotImplemented\n");
|
OutputDebugStringW(L"CInputPin::EndFlush NotImplemented\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
HRESULT
|
HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CInputPin::NewSegment(REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate)
|
CInputPin::NewSegment(REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::NewSegment NotImplemented\n");
|
OutputDebugStringW(L"CInputPin::NewSegment NotImplemented\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1237,11 +1355,25 @@ CInputPin::CheckFormat(
|
||||||
PKSMULTIPLE_ITEM MultipleItem;
|
PKSMULTIPLE_ITEM MultipleItem;
|
||||||
PKSDATAFORMAT DataFormat;
|
PKSDATAFORMAT DataFormat;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
IKsObject * KsObjectParent;
|
||||||
|
HANDLE hFilter;
|
||||||
|
|
||||||
if (!pmt)
|
if (!pmt)
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
|
|
||||||
hr = KsGetMultiplePinFactoryItems(m_hFilter, m_PinId, KSPROPERTY_PIN_DATARANGES, (PVOID*)&MultipleItem);
|
hr = m_ParentFilter->QueryInterface(IID_IKsObject, (LPVOID*)&KsObjectParent);
|
||||||
|
if (FAILED(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
|
hFilter = KsObjectParent->KsGetObjectHandle();
|
||||||
|
|
||||||
|
KsObjectParent->Release();
|
||||||
|
|
||||||
|
if (!hFilter)
|
||||||
|
return E_HANDLE;
|
||||||
|
|
||||||
|
|
||||||
|
hr = KsGetMultiplePinFactoryItems(hFilter, m_PinId, KSPROPERTY_PIN_DATARANGES, (PVOID*)&MultipleItem);
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
return S_FALSE;
|
return S_FALSE;
|
||||||
|
|
||||||
|
@ -1254,7 +1386,9 @@ CInputPin::CheckFormat(
|
||||||
{
|
{
|
||||||
// format is supported
|
// format is supported
|
||||||
CoTaskMemFree(MultipleItem);
|
CoTaskMemFree(MultipleItem);
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::CheckFormat format OK\n");
|
OutputDebugStringW(L"CInputPin::CheckFormat format OK\n");
|
||||||
|
#endif
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
DataFormat = (PKSDATAFORMAT)((ULONG_PTR)DataFormat + DataFormat->FormatSize);
|
DataFormat = (PKSDATAFORMAT)((ULONG_PTR)DataFormat + DataFormat->FormatSize);
|
||||||
|
@ -1321,7 +1455,9 @@ CInputPin::CreatePin(
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
{
|
{
|
||||||
// failed to load interface handler plugin
|
// failed to load interface handler plugin
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::CreatePin failed to load InterfaceHandlerPlugin\n");
|
OutputDebugStringW(L"CInputPin::CreatePin failed to load InterfaceHandlerPlugin\n");
|
||||||
|
#endif
|
||||||
CoTaskMemFree(MediumList);
|
CoTaskMemFree(MediumList);
|
||||||
CoTaskMemFree(InterfaceList);
|
CoTaskMemFree(InterfaceList);
|
||||||
|
|
||||||
|
@ -1333,7 +1469,9 @@ CInputPin::CreatePin(
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
{
|
{
|
||||||
// failed to load interface handler plugin
|
// failed to load interface handler plugin
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CInputPin::CreatePin failed to initialize InterfaceHandlerPlugin\n");
|
OutputDebugStringW(L"CInputPin::CreatePin failed to initialize InterfaceHandlerPlugin\n");
|
||||||
|
#endif
|
||||||
InterfaceHandler->Release();
|
InterfaceHandler->Release();
|
||||||
CoTaskMemFree(MediumList);
|
CoTaskMemFree(MediumList);
|
||||||
CoTaskMemFree(InterfaceList);
|
CoTaskMemFree(InterfaceList);
|
||||||
|
@ -1354,10 +1492,12 @@ CInputPin::CreatePin(
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CInputPin::CreatePin unexpected communication %u %s\n", m_Communication, m_PinName);
|
swprintf(Buffer, L"CInputPin::CreatePin unexpected communication %u %s\n", m_Communication, m_PinName);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
DebugBreak();
|
DebugBreak();
|
||||||
|
#endif
|
||||||
hr = E_FAIL;
|
hr = E_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1379,6 +1519,23 @@ CInputPin::CreatePinHandle(
|
||||||
PKSDATAFORMAT DataFormat;
|
PKSDATAFORMAT DataFormat;
|
||||||
ULONG Length;
|
ULONG Length;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
IKsObject * KsObjectParent;
|
||||||
|
HANDLE hFilter;
|
||||||
|
|
||||||
|
if (!pmt)
|
||||||
|
return E_POINTER;
|
||||||
|
|
||||||
|
hr = m_ParentFilter->QueryInterface(IID_IKsObject, (LPVOID*)&KsObjectParent);
|
||||||
|
if (FAILED(hr))
|
||||||
|
return hr;
|
||||||
|
|
||||||
|
hFilter = KsObjectParent->KsGetObjectHandle();
|
||||||
|
|
||||||
|
KsObjectParent->Release();
|
||||||
|
|
||||||
|
if (!hFilter)
|
||||||
|
return E_HANDLE;
|
||||||
|
|
||||||
|
|
||||||
if (m_hPin != INVALID_HANDLE_VALUE)
|
if (m_hPin != INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
|
@ -1427,7 +1584,7 @@ CInputPin::CreatePinHandle(
|
||||||
}
|
}
|
||||||
|
|
||||||
// create pin
|
// create pin
|
||||||
hr = KsCreatePin(m_hFilter, PinConnect, GENERIC_WRITE, &m_hPin);
|
hr = KsCreatePin(hFilter, PinConnect, GENERIC_WRITE, &m_hPin);
|
||||||
|
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
|
@ -1436,16 +1593,19 @@ CInputPin::CreatePinHandle(
|
||||||
CopyMemory(&m_Interface, Interface, sizeof(KSPIN_INTERFACE));
|
CopyMemory(&m_Interface, Interface, sizeof(KSPIN_INTERFACE));
|
||||||
CopyMemory(&m_MediaFormat, pmt, sizeof(AM_MEDIA_TYPE));
|
CopyMemory(&m_MediaFormat, pmt, sizeof(AM_MEDIA_TYPE));
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
LPOLESTR pMajor, pSub, pFormat;
|
LPOLESTR pMajor, pSub, pFormat;
|
||||||
StringFromIID(m_MediaFormat.majortype, &pMajor);
|
StringFromIID(m_MediaFormat.majortype, &pMajor);
|
||||||
StringFromIID(m_MediaFormat.subtype , &pSub);
|
StringFromIID(m_MediaFormat.subtype , &pSub);
|
||||||
StringFromIID(m_MediaFormat.formattype, &pFormat);
|
StringFromIID(m_MediaFormat.formattype, &pFormat);
|
||||||
|
|
||||||
WCHAR Buffer[200];
|
WCHAR Buffer[200];
|
||||||
swprintf(Buffer, L"CInputPin::CreatePinHandle Major %s SubType %s Format %s pbFormat %p cbFormat %u\n", pMajor, pSub, pFormat, pmt->pbFormat, pmt->cbFormat);
|
swprintf(Buffer, L"CInputPin::CreatePinHandle Major %s SubType %s Format %s pbFormat %p cbFormat %u\n", pMajor, pSub, pFormat, pmt->pbFormat, pmt->cbFormat);
|
||||||
CoTaskMemFree(pMajor);
|
CoTaskMemFree(pMajor);
|
||||||
CoTaskMemFree(pSub);
|
CoTaskMemFree(pSub);
|
||||||
CoTaskMemFree(pFormat);
|
CoTaskMemFree(pFormat);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (pmt->cbFormat)
|
if (pmt->cbFormat)
|
||||||
{
|
{
|
||||||
|
@ -1460,6 +1620,33 @@ CInputPin::CreatePinHandle(
|
||||||
CopyMemory(m_MediaFormat.pbFormat, pmt->pbFormat, pmt->cbFormat);
|
CopyMemory(m_MediaFormat.pbFormat, pmt->pbFormat, pmt->cbFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LPGUID pGuid;
|
||||||
|
ULONG NumGuids = 0;
|
||||||
|
|
||||||
|
// get all supported sets
|
||||||
|
hr = GetSupportedSets(&pGuid, &NumGuids);
|
||||||
|
if (FAILED(hr))
|
||||||
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"CInputPin::CreatePinHandle GetSupportedSets failed\n");
|
||||||
|
#endif
|
||||||
|
return hr;
|
||||||
|
}
|
||||||
|
|
||||||
|
// load all proxy plugins
|
||||||
|
hr = LoadProxyPlugins(pGuid, NumGuids);
|
||||||
|
if (FAILED(hr))
|
||||||
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"CInputPin::CreatePinHandle LoadProxyPlugins failed\n");
|
||||||
|
#endif
|
||||||
|
return hr;
|
||||||
|
}
|
||||||
|
|
||||||
|
// free sets
|
||||||
|
CoTaskMemFree(pGuid);
|
||||||
|
|
||||||
|
|
||||||
//TODO
|
//TODO
|
||||||
// connect pin pipes
|
// connect pin pipes
|
||||||
|
|
||||||
|
@ -1471,6 +1658,137 @@ CInputPin::CreatePinHandle(
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
STDMETHODCALLTYPE
|
||||||
|
CInputPin::GetSupportedSets(
|
||||||
|
LPGUID * pOutGuid,
|
||||||
|
PULONG NumGuids)
|
||||||
|
{
|
||||||
|
KSPROPERTY Property;
|
||||||
|
LPGUID pGuid;
|
||||||
|
ULONG NumProperty = 0;
|
||||||
|
ULONG NumMethods = 0;
|
||||||
|
ULONG NumEvents = 0;
|
||||||
|
ULONG Length;
|
||||||
|
ULONG BytesReturned;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
|
Property.Set = GUID_NULL;
|
||||||
|
Property.Id = 0;
|
||||||
|
Property.Flags = KSPROPERTY_TYPE_SETSUPPORT;
|
||||||
|
|
||||||
|
KsSynchronousDeviceControl(m_hPin, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), NULL, 0, &NumProperty);
|
||||||
|
KsSynchronousDeviceControl(m_hPin, IOCTL_KS_METHOD, (PVOID)&Property, sizeof(KSPROPERTY), NULL, 0, &NumMethods);
|
||||||
|
KsSynchronousDeviceControl(m_hPin, IOCTL_KS_ENABLE_EVENT, (PVOID)&Property, sizeof(KSPROPERTY), NULL, 0, &NumEvents);
|
||||||
|
|
||||||
|
Length = NumProperty + NumMethods + NumEvents;
|
||||||
|
|
||||||
|
// allocate guid buffer
|
||||||
|
pGuid = (LPGUID)CoTaskMemAlloc(Length);
|
||||||
|
if (!pGuid)
|
||||||
|
{
|
||||||
|
// failed
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
NumProperty /= sizeof(GUID);
|
||||||
|
NumMethods /= sizeof(GUID);
|
||||||
|
NumEvents /= sizeof(GUID);
|
||||||
|
|
||||||
|
// get all properties
|
||||||
|
hr = KsSynchronousDeviceControl(m_hPin, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)pGuid, Length, &BytesReturned);
|
||||||
|
if (FAILED(hr))
|
||||||
|
{
|
||||||
|
CoTaskMemFree(pGuid);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
Length -= BytesReturned;
|
||||||
|
|
||||||
|
// get all methods
|
||||||
|
if (Length)
|
||||||
|
{
|
||||||
|
hr = KsSynchronousDeviceControl(m_hPin, IOCTL_KS_METHOD, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)&pGuid[NumProperty], Length, &BytesReturned);
|
||||||
|
if (FAILED(hr))
|
||||||
|
{
|
||||||
|
CoTaskMemFree(pGuid);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
Length -= BytesReturned;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get all events
|
||||||
|
if (Length)
|
||||||
|
{
|
||||||
|
hr = KsSynchronousDeviceControl(m_hPin, IOCTL_KS_ENABLE_EVENT, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)&pGuid[NumProperty+NumMethods], Length, &BytesReturned);
|
||||||
|
if (FAILED(hr))
|
||||||
|
{
|
||||||
|
CoTaskMemFree(pGuid);
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
Length -= BytesReturned;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
|
WCHAR Buffer[200];
|
||||||
|
swprintf(Buffer, L"NumProperty %lu NumMethods %lu NumEvents %lu\n", NumProperty, NumMethods, NumEvents);
|
||||||
|
OutputDebugStringW(Buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
*pOutGuid = pGuid;
|
||||||
|
*NumGuids = NumProperty+NumEvents+NumMethods;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
STDMETHODCALLTYPE
|
||||||
|
CInputPin::LoadProxyPlugins(
|
||||||
|
LPGUID pGuids,
|
||||||
|
ULONG NumGuids)
|
||||||
|
{
|
||||||
|
ULONG Index;
|
||||||
|
LPOLESTR pStr;
|
||||||
|
HKEY hKey, hSubKey;
|
||||||
|
HRESULT hr;
|
||||||
|
IUnknown * pUnknown;
|
||||||
|
|
||||||
|
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\Control\\MediaInterfaces", 0, KEY_READ, &hKey) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
OutputDebugStringW(L"CInputPin::LoadProxyPlugins failed to open MediaInterfaces key\n");
|
||||||
|
return E_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
// enumerate all sets
|
||||||
|
for(Index = 0; Index < NumGuids; Index++)
|
||||||
|
{
|
||||||
|
// convert to string
|
||||||
|
hr = StringFromCLSID(pGuids[Index], &pStr);
|
||||||
|
if (FAILED(hr))
|
||||||
|
return E_FAIL;
|
||||||
|
|
||||||
|
// now try open class key
|
||||||
|
if (RegOpenKeyExW(hKey, pStr, 0, KEY_READ, &hSubKey) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
// no plugin for that set exists
|
||||||
|
CoTaskMemFree(pStr);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// try load plugin
|
||||||
|
hr = CoCreateInstance(pGuids[Index], (IBaseFilter*)this, CLSCTX_INPROC_SERVER, IID_IUnknown, (void**)&pUnknown);
|
||||||
|
if (SUCCEEDED(hr))
|
||||||
|
{
|
||||||
|
// store plugin
|
||||||
|
m_Plugins.push_back(pUnknown);
|
||||||
|
}
|
||||||
|
// close key
|
||||||
|
RegCloseKey(hSubKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
// close media interfaces key
|
||||||
|
RegCloseKey(hKey);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
HRESULT
|
HRESULT
|
||||||
WINAPI
|
WINAPI
|
||||||
CInputPin_Constructor(
|
CInputPin_Constructor(
|
||||||
|
@ -1482,7 +1800,7 @@ CInputPin_Constructor(
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID * ppv)
|
LPVOID * ppv)
|
||||||
{
|
{
|
||||||
CInputPin * handler = new CInputPin(ParentFilter, PinName, hFilter, PinId, Communication);
|
CInputPin * handler = new CInputPin(ParentFilter, PinName, PinId, Communication);
|
||||||
|
|
||||||
if (!handler)
|
if (!handler)
|
||||||
return E_OUTOFMEMORY;
|
return E_OUTOFMEMORY;
|
||||||
|
|
|
@ -285,10 +285,11 @@ CKsInterfaceHandler::KsProcessMediaSamples(
|
||||||
if (SampleList[Index]->IsSyncPoint() == S_OK)
|
if (SampleList[Index]->IsSyncPoint() == S_OK)
|
||||||
Properties.dwSampleFlags |= AM_SAMPLE_SPLICEPOINT;
|
Properties.dwSampleFlags |= AM_SAMPLE_SPLICEPOINT;
|
||||||
}
|
}
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
WCHAR Buffer[200];
|
WCHAR Buffer[200];
|
||||||
swprintf(Buffer, L"CKsInterfaceHandler::KsProcessMediaSamples PinName %s BufferLength %lu Property Buffer %p ExtendedSize %u lActual %u dwSampleFlags %lx\n", m_PinName, Properties.cbBuffer, Properties.pbBuffer, ExtendedSize, Properties.lActual, Properties.dwSampleFlags);
|
swprintf(Buffer, L"CKsInterfaceHandler::KsProcessMediaSamples PinName %s BufferLength %lu Property Buffer %p ExtendedSize %u lActual %u dwSampleFlags %lx\n", m_PinName, Properties.cbBuffer, Properties.pbBuffer, ExtendedSize, Properties.lActual, Properties.dwSampleFlags);
|
||||||
//OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
CurStreamHeader->Size = sizeof(KSSTREAM_HEADER) + ExtendedSize;
|
CurStreamHeader->Size = sizeof(KSSTREAM_HEADER) + ExtendedSize;
|
||||||
CurStreamHeader->PresentationTime.Denominator = 1;
|
CurStreamHeader->PresentationTime.Denominator = 1;
|
||||||
|
@ -479,7 +480,9 @@ CKsInterfaceHandler_Constructor(
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID * ppv)
|
LPVOID * ppv)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsInterfaceHandler_Constructor\n");
|
OutputDebugStringW(L"CKsInterfaceHandler_Constructor\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
CKsInterfaceHandler * handler = new CKsInterfaceHandler();
|
CKsInterfaceHandler * handler = new CKsInterfaceHandler();
|
||||||
|
|
||||||
|
|
|
@ -116,8 +116,6 @@ CMediaSample::QueryInterface(
|
||||||
}
|
}
|
||||||
if (IsEqualGUID(refiid, IID_IMediaSample2))
|
if (IsEqualGUID(refiid, IID_IMediaSample2))
|
||||||
{
|
{
|
||||||
|
|
||||||
OutputDebugStringW(L"CMediaSample::QueryInterface requested IMediaSample2 interface\n");
|
|
||||||
#if 0
|
#if 0
|
||||||
*Output = (IMediaSample2*)(this);
|
*Output = (IMediaSample2*)(this);
|
||||||
reinterpret_cast<IMediaSample2*>(*Output)->AddRef();
|
reinterpret_cast<IMediaSample2*>(*Output)->AddRef();
|
||||||
|
@ -267,8 +265,6 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CMediaSample::GetMediaType(AM_MEDIA_TYPE **ppMediaType)
|
CMediaSample::GetMediaType(AM_MEDIA_TYPE **ppMediaType)
|
||||||
{
|
{
|
||||||
OutputDebugStringW(L"CMediaSample::GetMediaType\n");
|
|
||||||
|
|
||||||
if (!m_MediaType)
|
if (!m_MediaType)
|
||||||
{
|
{
|
||||||
*ppMediaType = NULL;
|
*ppMediaType = NULL;
|
||||||
|
@ -352,7 +348,9 @@ CMediaSample_Constructor(
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID * ppv)
|
LPVOID * ppv)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CMediaSample_Constructor\n");
|
OutputDebugStringW(L"CMediaSample_Constructor\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
CMediaSample * handler = new CMediaSample(Allocator, pBuffer, BufferSize);
|
CMediaSample * handler = new CMediaSample(Allocator, pBuffer, BufferSize);
|
||||||
|
|
||||||
|
|
|
@ -124,7 +124,9 @@ CKsNode_Constructor(
|
||||||
HANDLE handle;
|
HANDLE handle;
|
||||||
KSNODE_CREATE NodeCreate;
|
KSNODE_CREATE NodeCreate;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsNode_Constructor\n");
|
OutputDebugStringW(L"CKsNode_Constructor\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
//setup request
|
//setup request
|
||||||
NodeCreate.CreateFlags = 0;
|
NodeCreate.CreateFlags = 0;
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -3,6 +3,7 @@
|
||||||
#define _FORCENAMELESSUNION
|
#define _FORCENAMELESSUNION
|
||||||
#define BUILDING_KS
|
#define BUILDING_KS
|
||||||
#define _KSDDK_
|
#define _KSDDK_
|
||||||
|
//#define KSPROXY_TRACE
|
||||||
#include <dshow.h>
|
#include <dshow.h>
|
||||||
//#include <streams.h>
|
//#include <streams.h>
|
||||||
#include <ks.h>
|
#include <ks.h>
|
||||||
|
|
|
@ -63,7 +63,7 @@ public:
|
||||||
InterlockedDecrement(&m_Ref);
|
InterlockedDecrement(&m_Ref);
|
||||||
if (!m_Ref)
|
if (!m_Ref)
|
||||||
{
|
{
|
||||||
delete this;
|
//delete this;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return m_Ref;
|
return m_Ref;
|
||||||
|
@ -171,7 +171,7 @@ public:
|
||||||
HRESULT STDMETHODCALLTYPE GetPages(CAUUID *pPages);
|
HRESULT STDMETHODCALLTYPE GetPages(CAUUID *pPages);
|
||||||
|
|
||||||
|
|
||||||
CKsProxy() : m_Ref(0), m_pGraph(0), m_ReferenceClock((IReferenceClock*)this), m_FilterState(State_Stopped), m_hDevice(0), m_Plugins(), m_Pins(), m_DevicePath(0), m_hClock(0) {};
|
CKsProxy();
|
||||||
~CKsProxy()
|
~CKsProxy()
|
||||||
{
|
{
|
||||||
if (m_hDevice)
|
if (m_hDevice)
|
||||||
|
@ -203,8 +203,23 @@ protected:
|
||||||
LPWSTR m_DevicePath;
|
LPWSTR m_DevicePath;
|
||||||
CLSID m_DeviceInterfaceGUID;
|
CLSID m_DeviceInterfaceGUID;
|
||||||
HANDLE m_hClock;
|
HANDLE m_hClock;
|
||||||
|
CRITICAL_SECTION m_Lock;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
CKsProxy::CKsProxy() : m_Ref(0),
|
||||||
|
m_pGraph(0),
|
||||||
|
m_ReferenceClock((IReferenceClock*)this),
|
||||||
|
m_FilterState(State_Stopped),
|
||||||
|
m_hDevice(0),
|
||||||
|
m_Plugins(),
|
||||||
|
m_Pins(),
|
||||||
|
m_DevicePath(0),
|
||||||
|
m_hClock(0)
|
||||||
|
{
|
||||||
|
InitializeCriticalSection(&m_Lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
HRESULT
|
HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsProxy::QueryInterface(
|
CKsProxy::QueryInterface(
|
||||||
|
@ -332,24 +347,26 @@ CKsProxy::QueryInterface(
|
||||||
HRESULT hr = m_Plugins[Index]->QueryInterface(refiid, Output);
|
HRESULT hr = m_Plugins[Index]->QueryInterface(refiid, Output);
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
LPOLESTR lpstr;
|
LPOLESTR lpstr;
|
||||||
StringFromCLSID(refiid, &lpstr);
|
StringFromCLSID(refiid, &lpstr);
|
||||||
swprintf(Buffer, L"CKsProxy::QueryInterface plugin %lu supports interface %s\n", Index, lpstr);
|
swprintf(Buffer, L"CKsProxy::QueryInterface plugin %lu supports interface %s\n", Index, lpstr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
CoTaskMemFree(lpstr);
|
CoTaskMemFree(lpstr);
|
||||||
|
#endif
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
WCHAR Buffer[MAX_PATH];
|
WCHAR Buffer[MAX_PATH];
|
||||||
LPOLESTR lpstr;
|
LPOLESTR lpstr;
|
||||||
StringFromCLSID(refiid, &lpstr);
|
StringFromCLSID(refiid, &lpstr);
|
||||||
swprintf(Buffer, L"CKsProxy::QueryInterface: NoInterface for %s !!!\n", lpstr);
|
swprintf(Buffer, L"CKsProxy::QueryInterface: NoInterface for %s !!!\n", lpstr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
CoTaskMemFree(lpstr);
|
CoTaskMemFree(lpstr);
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOINTERFACE;
|
return E_NOINTERFACE;
|
||||||
}
|
}
|
||||||
|
@ -362,7 +379,9 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsProxy::GetPages(CAUUID *pPages)
|
CKsProxy::GetPages(CAUUID *pPages)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::GetPages NotImplemented\n");
|
OutputDebugStringW(L"CKsProxy::GetPages NotImplemented\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!pPages)
|
if (!pPages)
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
|
@ -478,7 +497,10 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::KsGetTime(
|
CKsProxy::KsGetTime(
|
||||||
LONGLONG* Time)
|
LONGLONG* Time)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::KsGetTime\n");
|
OutputDebugStringW(L"CKsProxy::KsGetTime\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return PerformClockProperty(KSPROPERTY_CLOCK_TIME, KSPROPERTY_TYPE_GET, (PVOID)Time, sizeof(LONGLONG));
|
return PerformClockProperty(KSPROPERTY_CLOCK_TIME, KSPROPERTY_TYPE_GET, (PVOID)Time, sizeof(LONGLONG));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -487,7 +509,10 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::KsSetTime(
|
CKsProxy::KsSetTime(
|
||||||
LONGLONG Time)
|
LONGLONG Time)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::KsSetTime\n");
|
OutputDebugStringW(L"CKsProxy::KsSetTime\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return PerformClockProperty(KSPROPERTY_CLOCK_TIME, KSPROPERTY_TYPE_SET, (PVOID)&Time, sizeof(LONGLONG));
|
return PerformClockProperty(KSPROPERTY_CLOCK_TIME, KSPROPERTY_TYPE_SET, (PVOID)&Time, sizeof(LONGLONG));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -496,7 +521,10 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::KsGetPhysicalTime(
|
CKsProxy::KsGetPhysicalTime(
|
||||||
LONGLONG* Time)
|
LONGLONG* Time)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::KsGetPhysicalTime\n");
|
OutputDebugStringW(L"CKsProxy::KsGetPhysicalTime\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return PerformClockProperty(KSPROPERTY_CLOCK_PHYSICALTIME, KSPROPERTY_TYPE_GET, (PVOID)Time, sizeof(LONGLONG));
|
return PerformClockProperty(KSPROPERTY_CLOCK_PHYSICALTIME, KSPROPERTY_TYPE_GET, (PVOID)Time, sizeof(LONGLONG));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -505,7 +533,10 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::KsSetPhysicalTime(
|
CKsProxy::KsSetPhysicalTime(
|
||||||
LONGLONG Time)
|
LONGLONG Time)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::KsSetPhysicalTime\n");
|
OutputDebugStringW(L"CKsProxy::KsSetPhysicalTime\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return PerformClockProperty(KSPROPERTY_CLOCK_PHYSICALTIME, KSPROPERTY_TYPE_SET, (PVOID)&Time, sizeof(LONGLONG));
|
return PerformClockProperty(KSPROPERTY_CLOCK_PHYSICALTIME, KSPROPERTY_TYPE_SET, (PVOID)&Time, sizeof(LONGLONG));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -514,7 +545,10 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::KsGetCorrelatedTime(
|
CKsProxy::KsGetCorrelatedTime(
|
||||||
KSCORRELATED_TIME* CorrelatedTime)
|
KSCORRELATED_TIME* CorrelatedTime)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::KsGetCorrelatedTime\n");
|
OutputDebugStringW(L"CKsProxy::KsGetCorrelatedTime\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return PerformClockProperty(KSPROPERTY_CLOCK_CORRELATEDTIME, KSPROPERTY_TYPE_GET, (PVOID)CorrelatedTime, sizeof(KSCORRELATED_TIME));
|
return PerformClockProperty(KSPROPERTY_CLOCK_CORRELATEDTIME, KSPROPERTY_TYPE_GET, (PVOID)CorrelatedTime, sizeof(KSCORRELATED_TIME));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -523,7 +557,9 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::KsSetCorrelatedTime(
|
CKsProxy::KsSetCorrelatedTime(
|
||||||
KSCORRELATED_TIME* CorrelatedTime)
|
KSCORRELATED_TIME* CorrelatedTime)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::KsSetCorrelatedTime\n");
|
OutputDebugStringW(L"CKsProxy::KsSetCorrelatedTime\n");
|
||||||
|
#endif
|
||||||
return PerformClockProperty(KSPROPERTY_CLOCK_CORRELATEDTIME, KSPROPERTY_TYPE_SET, (PVOID)CorrelatedTime, sizeof(KSCORRELATED_TIME));
|
return PerformClockProperty(KSPROPERTY_CLOCK_CORRELATEDTIME, KSPROPERTY_TYPE_SET, (PVOID)CorrelatedTime, sizeof(KSCORRELATED_TIME));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -532,7 +568,9 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::KsGetCorrelatedPhysicalTime(
|
CKsProxy::KsGetCorrelatedPhysicalTime(
|
||||||
KSCORRELATED_TIME* CorrelatedTime)
|
KSCORRELATED_TIME* CorrelatedTime)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::KsGetCorrelatedPhysicalTime\n");
|
OutputDebugStringW(L"CKsProxy::KsGetCorrelatedPhysicalTime\n");
|
||||||
|
#endif
|
||||||
return PerformClockProperty(KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME, KSPROPERTY_TYPE_GET, (PVOID)CorrelatedTime, sizeof(KSCORRELATED_TIME));
|
return PerformClockProperty(KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME, KSPROPERTY_TYPE_GET, (PVOID)CorrelatedTime, sizeof(KSCORRELATED_TIME));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -541,7 +579,10 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::KsSetCorrelatedPhysicalTime(
|
CKsProxy::KsSetCorrelatedPhysicalTime(
|
||||||
KSCORRELATED_TIME* CorrelatedTime)
|
KSCORRELATED_TIME* CorrelatedTime)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::KsSetCorrelatedPhysicalTime\n");
|
OutputDebugStringW(L"CKsProxy::KsSetCorrelatedPhysicalTime\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return PerformClockProperty(KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME, KSPROPERTY_TYPE_SET, (PVOID)CorrelatedTime, sizeof(KSCORRELATED_TIME));
|
return PerformClockProperty(KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME, KSPROPERTY_TYPE_SET, (PVOID)CorrelatedTime, sizeof(KSCORRELATED_TIME));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -550,7 +591,9 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::KsGetResolution(
|
CKsProxy::KsGetResolution(
|
||||||
KSRESOLUTION* Resolution)
|
KSRESOLUTION* Resolution)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::KsGetResolution\n");
|
OutputDebugStringW(L"CKsProxy::KsGetResolution\n");
|
||||||
|
#endif
|
||||||
return PerformClockProperty(KSPROPERTY_CLOCK_RESOLUTION, KSPROPERTY_TYPE_GET, (PVOID)Resolution, sizeof(KSRESOLUTION));
|
return PerformClockProperty(KSPROPERTY_CLOCK_RESOLUTION, KSPROPERTY_TYPE_GET, (PVOID)Resolution, sizeof(KSRESOLUTION));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -559,7 +602,9 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::KsGetState(
|
CKsProxy::KsGetState(
|
||||||
KSSTATE* State)
|
KSSTATE* State)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::KsGetState\n");
|
OutputDebugStringW(L"CKsProxy::KsGetState\n");
|
||||||
|
#endif
|
||||||
return PerformClockProperty(KSPROPERTY_CLOCK_STATE, KSPROPERTY_TYPE_GET, (PVOID)State, sizeof(KSSTATE));
|
return PerformClockProperty(KSPROPERTY_CLOCK_STATE, KSPROPERTY_TYPE_GET, (PVOID)State, sizeof(KSSTATE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -575,7 +620,9 @@ CKsProxy::GetTime(
|
||||||
KSPROPERTY Property;
|
KSPROPERTY Property;
|
||||||
ULONG BytesReturned;
|
ULONG BytesReturned;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::GetTime\n");
|
OutputDebugStringW(L"CKsProxy::GetTime\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!pTime)
|
if (!pTime)
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
|
@ -620,7 +667,9 @@ CKsProxy::AdviseTime(
|
||||||
ULONG BytesReturned;
|
ULONG BytesReturned;
|
||||||
PKSEVENT_TIME_MARK Event;
|
PKSEVENT_TIME_MARK Event;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::AdviseTime\n");
|
OutputDebugStringW(L"CKsProxy::AdviseTime\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
//FIXME locks
|
//FIXME locks
|
||||||
|
@ -686,7 +735,9 @@ CKsProxy::AdvisePeriodic(
|
||||||
ULONG BytesReturned;
|
ULONG BytesReturned;
|
||||||
PKSEVENT_TIME_INTERVAL Event;
|
PKSEVENT_TIME_INTERVAL Event;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::AdvisePeriodic\n");
|
OutputDebugStringW(L"CKsProxy::AdvisePeriodic\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
//FIXME locks
|
//FIXME locks
|
||||||
|
@ -748,7 +799,9 @@ CKsProxy::Unadvise(
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
ULONG BytesReturned;
|
ULONG BytesReturned;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::Unadvise\n");
|
OutputDebugStringW(L"CKsProxy::Unadvise\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (m_hClock)
|
if (m_hClock)
|
||||||
{
|
{
|
||||||
|
@ -786,7 +839,10 @@ CKsProxy::GetCapabilities(
|
||||||
Property.Id = KSPROPERTY_MEDIASEEKING_CAPABILITIES;
|
Property.Id = KSPROPERTY_MEDIASEEKING_CAPABILITIES;
|
||||||
Property.Flags = KSPROPERTY_TYPE_GET;
|
Property.Flags = KSPROPERTY_TYPE_GET;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::GetCapabilities\n");
|
OutputDebugStringW(L"CKsProxy::GetCapabilities\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (!pCapabilities)
|
if (!pCapabilities)
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
|
@ -836,7 +892,9 @@ CKsProxy::CheckCapabilities(
|
||||||
DWORD Capabilities;
|
DWORD Capabilities;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::CheckCapabilities\n");
|
OutputDebugStringW(L"CKsProxy::CheckCapabilities\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!pCapabilities)
|
if (!pCapabilities)
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
|
@ -914,11 +972,13 @@ CKsProxy::IsFormatSupported(
|
||||||
ULONG Index;
|
ULONG Index;
|
||||||
HRESULT hr = S_FALSE;
|
HRESULT hr = S_FALSE;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
LPOLESTR pstr;
|
LPOLESTR pstr;
|
||||||
StringFromCLSID(*pFormat, &pstr);
|
StringFromCLSID(*pFormat, &pstr);
|
||||||
swprintf(Buffer, L"CKsProxy::IsFormatSupported %s\n",pstr);
|
swprintf(Buffer, L"CKsProxy::IsFormatSupported %s\n",pstr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!pFormat)
|
if (!pFormat)
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
|
@ -927,8 +987,10 @@ CKsProxy::IsFormatSupported(
|
||||||
hr = GetMediaSeekingFormats(&FormatList);
|
hr = GetMediaSeekingFormats(&FormatList);
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
swprintf(Buffer, L"CKsProxy::IsFormatSupported NumFormat %lu\n",FormatList->Count);
|
swprintf(Buffer, L"CKsProxy::IsFormatSupported NumFormat %lu\n",FormatList->Count);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
//iterate through format list
|
//iterate through format list
|
||||||
pGuid = (LPGUID)(FormatList + 1);
|
pGuid = (LPGUID)(FormatList + 1);
|
||||||
|
@ -961,7 +1023,9 @@ CKsProxy::IsFormatSupported(
|
||||||
{
|
{
|
||||||
// plugin does not support interface
|
// plugin does not support interface
|
||||||
hr = S_FALSE;
|
hr = S_FALSE;
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::IsFormatSupported plugin does not support IMediaSeeking interface\n");
|
OutputDebugStringW(L"CKsProxy::IsFormatSupported plugin does not support IMediaSeeking interface\n");
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -986,7 +1050,9 @@ CKsProxy::QueryPreferredFormat(
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
ULONG Index;
|
ULONG Index;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::QueryPreferredFormat\n");
|
OutputDebugStringW(L"CKsProxy::QueryPreferredFormat\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!pFormat)
|
if (!pFormat)
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
|
@ -1046,7 +1112,9 @@ CKsProxy::GetTimeFormat(
|
||||||
Property.Id = KSPROPERTY_MEDIASEEKING_TIMEFORMAT;
|
Property.Id = KSPROPERTY_MEDIASEEKING_TIMEFORMAT;
|
||||||
Property.Flags = KSPROPERTY_TYPE_GET;
|
Property.Flags = KSPROPERTY_TYPE_GET;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::GetTimeFormat\n");
|
OutputDebugStringW(L"CKsProxy::GetTimeFormat\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
hr = KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)pFormat, sizeof(GUID), &BytesReturned);
|
hr = KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)pFormat, sizeof(GUID), &BytesReturned);
|
||||||
if (hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_FOUND) || hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_SET_NOT_FOUND))
|
if (hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_FOUND) || hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_SET_NOT_FOUND))
|
||||||
|
@ -1086,7 +1154,9 @@ CKsProxy::IsUsingTimeFormat(
|
||||||
{
|
{
|
||||||
GUID Format;
|
GUID Format;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::IsUsingTimeFormat\n");
|
OutputDebugStringW(L"CKsProxy::IsUsingTimeFormat\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (FAILED(QueryPreferredFormat(&Format)))
|
if (FAILED(QueryPreferredFormat(&Format)))
|
||||||
return S_FALSE;
|
return S_FALSE;
|
||||||
|
@ -1110,7 +1180,9 @@ CKsProxy::SetTimeFormat(
|
||||||
Property.Id = KSPROPERTY_MEDIASEEKING_TIMEFORMAT;
|
Property.Id = KSPROPERTY_MEDIASEEKING_TIMEFORMAT;
|
||||||
Property.Flags = KSPROPERTY_TYPE_SET;
|
Property.Flags = KSPROPERTY_TYPE_SET;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::SetTimeFormat\n");
|
OutputDebugStringW(L"CKsProxy::SetTimeFormat\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
hr = KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)pFormat, sizeof(GUID), &BytesReturned);
|
hr = KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)pFormat, sizeof(GUID), &BytesReturned);
|
||||||
if (hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_FOUND) || hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_SET_NOT_FOUND))
|
if (hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_FOUND) || hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_SET_NOT_FOUND))
|
||||||
|
@ -1158,7 +1230,9 @@ CKsProxy::GetDuration(
|
||||||
Property.Id = KSPROPERTY_MEDIASEEKING_DURATION;
|
Property.Id = KSPROPERTY_MEDIASEEKING_DURATION;
|
||||||
Property.Flags = KSPROPERTY_TYPE_GET;
|
Property.Flags = KSPROPERTY_TYPE_GET;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::GetDuration\n");
|
OutputDebugStringW(L"CKsProxy::GetDuration\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
hr = KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)pDuration, sizeof(LONGLONG), &BytesReturned);
|
hr = KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)pDuration, sizeof(LONGLONG), &BytesReturned);
|
||||||
if (hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_FOUND) || hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_SET_NOT_FOUND))
|
if (hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_FOUND) || hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_SET_NOT_FOUND))
|
||||||
|
@ -1204,7 +1278,9 @@ CKsProxy::GetStopPosition(
|
||||||
Property.Id = KSPROPERTY_MEDIASEEKING_STOPPOSITION;
|
Property.Id = KSPROPERTY_MEDIASEEKING_STOPPOSITION;
|
||||||
Property.Flags = KSPROPERTY_TYPE_GET;
|
Property.Flags = KSPROPERTY_TYPE_GET;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::GetStopPosition\n");
|
OutputDebugStringW(L"CKsProxy::GetStopPosition\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
hr = KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)pStop, sizeof(LONGLONG), &BytesReturned);
|
hr = KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)pStop, sizeof(LONGLONG), &BytesReturned);
|
||||||
if (hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_FOUND) || hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_SET_NOT_FOUND))
|
if (hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_FOUND) || hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_SET_NOT_FOUND))
|
||||||
|
@ -1250,7 +1326,9 @@ CKsProxy::GetCurrentPosition(
|
||||||
Property.Id = KSPROPERTY_MEDIASEEKING_POSITION;
|
Property.Id = KSPROPERTY_MEDIASEEKING_POSITION;
|
||||||
Property.Flags = KSPROPERTY_TYPE_GET;
|
Property.Flags = KSPROPERTY_TYPE_GET;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::GetCurrentPosition\n");
|
OutputDebugStringW(L"CKsProxy::GetCurrentPosition\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
hr = KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)pCurrent, sizeof(LONGLONG), &BytesReturned);
|
hr = KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)pCurrent, sizeof(LONGLONG), &BytesReturned);
|
||||||
if (hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_FOUND) || hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_SET_NOT_FOUND))
|
if (hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_FOUND) || hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_SET_NOT_FOUND))
|
||||||
|
@ -1300,7 +1378,9 @@ CKsProxy::ConvertTimeFormat(
|
||||||
Property.Property.Id = KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT;
|
Property.Property.Id = KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT;
|
||||||
Property.Property.Flags = KSPROPERTY_TYPE_GET;
|
Property.Property.Flags = KSPROPERTY_TYPE_GET;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::ConvertTimeFormat\n");
|
OutputDebugStringW(L"CKsProxy::ConvertTimeFormat\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!pTargetFormat)
|
if (!pTargetFormat)
|
||||||
{
|
{
|
||||||
|
@ -1383,7 +1463,9 @@ CKsProxy::SetPositions(
|
||||||
Positions.Stop = *pStop;
|
Positions.Stop = *pStop;
|
||||||
Positions.StopFlags = (KS_SEEKING_FLAGS)dwStopFlags;
|
Positions.StopFlags = (KS_SEEKING_FLAGS)dwStopFlags;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::SetPositions\n");
|
OutputDebugStringW(L"CKsProxy::SetPositions\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
hr = KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)&Positions, sizeof(KSPROPERTY_POSITIONS), &BytesReturned);
|
hr = KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)&Positions, sizeof(KSPROPERTY_POSITIONS), &BytesReturned);
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
|
@ -1444,7 +1526,9 @@ CKsProxy::GetPositions(
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::GetPositions\n");
|
OutputDebugStringW(L"CKsProxy::GetPositions\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
hr = GetCurrentPosition(pCurrent);
|
hr = GetCurrentPosition(pCurrent);
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
|
@ -1468,7 +1552,9 @@ CKsProxy::GetAvailable(
|
||||||
Property.Id = KSPROPERTY_MEDIASEEKING_AVAILABLE;
|
Property.Id = KSPROPERTY_MEDIASEEKING_AVAILABLE;
|
||||||
Property.Flags = KSPROPERTY_TYPE_GET;
|
Property.Flags = KSPROPERTY_TYPE_GET;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::GetAvailable\n");
|
OutputDebugStringW(L"CKsProxy::GetAvailable\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
hr = KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)&Media, sizeof(KSPROPERTY_MEDIAAVAILABLE), &BytesReturned);
|
hr = KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)&Media, sizeof(KSPROPERTY_MEDIAAVAILABLE), &BytesReturned);
|
||||||
if (hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_FOUND) || hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_SET_NOT_FOUND))
|
if (hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_FOUND) || hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_SET_NOT_FOUND))
|
||||||
|
@ -1512,7 +1598,9 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::SetRate(
|
CKsProxy::SetRate(
|
||||||
double dRate)
|
double dRate)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::SetRate\n");
|
OutputDebugStringW(L"CKsProxy::SetRate\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1521,7 +1609,9 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::GetRate(
|
CKsProxy::GetRate(
|
||||||
double *pdRate)
|
double *pdRate)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::GetRate\n");
|
OutputDebugStringW(L"CKsProxy::GetRate\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1538,7 +1628,9 @@ CKsProxy::GetPreroll(
|
||||||
Property.Id = KSPROPERTY_MEDIASEEKING_PREROLL;
|
Property.Id = KSPROPERTY_MEDIASEEKING_PREROLL;
|
||||||
Property.Flags = KSPROPERTY_TYPE_GET;
|
Property.Flags = KSPROPERTY_TYPE_GET;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::GetPreroll\n");
|
OutputDebugStringW(L"CKsProxy::GetPreroll\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
hr = KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)pllPreroll, sizeof(LONGLONG), &BytesReturned);
|
hr = KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)pllPreroll, sizeof(LONGLONG), &BytesReturned);
|
||||||
if (hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_FOUND) || hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_SET_NOT_FOUND))
|
if (hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_FOUND) || hr == MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_SET_NOT_FOUND))
|
||||||
|
@ -1584,7 +1676,7 @@ CKsProxy::GetMiscFlags()
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
PIN_DIRECTION PinDirection;
|
PIN_DIRECTION PinDirection;
|
||||||
KSPIN_COMMUNICATION Communication;
|
KSPIN_COMMUNICATION Communication;
|
||||||
WCHAR Buffer[100];
|
|
||||||
|
|
||||||
for(Index = 0; Index < m_Pins.size(); Index++)
|
for(Index = 0; Index < m_Pins.size(); Index++)
|
||||||
{
|
{
|
||||||
|
@ -1608,8 +1700,12 @@ CKsProxy::GetMiscFlags()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CKsProxy::GetMiscFlags stub Flags %x\n", Flags);
|
swprintf(Buffer, L"CKsProxy::GetMiscFlags stub Flags %x\n", Flags);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
return Flags;
|
return Flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1625,8 +1721,11 @@ CKsProxy::KsProperty(
|
||||||
ULONG DataLength,
|
ULONG DataLength,
|
||||||
ULONG* BytesReturned)
|
ULONG* BytesReturned)
|
||||||
{
|
{
|
||||||
assert(m_hDevice != 0);
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::KsProperty\n");
|
OutputDebugStringW(L"CKsProxy::KsProperty\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
assert(m_hDevice != 0);
|
||||||
return KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)Property, PropertyLength, (PVOID)PropertyData, DataLength, BytesReturned);
|
return KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)Property, PropertyLength, (PVOID)PropertyData, DataLength, BytesReturned);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1639,8 +1738,11 @@ CKsProxy::KsMethod(
|
||||||
ULONG DataLength,
|
ULONG DataLength,
|
||||||
ULONG* BytesReturned)
|
ULONG* BytesReturned)
|
||||||
{
|
{
|
||||||
assert(m_hDevice != 0);
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::KsMethod\n");
|
OutputDebugStringW(L"CKsProxy::KsMethod\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
assert(m_hDevice != 0);
|
||||||
return KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_METHOD, (PVOID)Method, MethodLength, (PVOID)MethodData, DataLength, BytesReturned);
|
return KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_METHOD, (PVOID)Method, MethodLength, (PVOID)MethodData, DataLength, BytesReturned);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1653,8 +1755,11 @@ CKsProxy::KsEvent(
|
||||||
ULONG DataLength,
|
ULONG DataLength,
|
||||||
ULONG* BytesReturned)
|
ULONG* BytesReturned)
|
||||||
{
|
{
|
||||||
assert(m_hDevice != 0);
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::KsEvent\n");
|
OutputDebugStringW(L"CKsProxy::KsEvent\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
assert(m_hDevice != 0);
|
||||||
if (EventLength)
|
if (EventLength)
|
||||||
return KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_ENABLE_EVENT, (PVOID)Event, EventLength, (PVOID)EventData, DataLength, BytesReturned);
|
return KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_ENABLE_EVENT, (PVOID)Event, EventLength, (PVOID)EventData, DataLength, BytesReturned);
|
||||||
else
|
else
|
||||||
|
@ -1677,7 +1782,9 @@ CKsProxy::Set(
|
||||||
{
|
{
|
||||||
ULONG BytesReturned;
|
ULONG BytesReturned;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::Set\n");
|
OutputDebugStringW(L"CKsProxy::Set\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (cbInstanceData)
|
if (cbInstanceData)
|
||||||
{
|
{
|
||||||
|
@ -1721,7 +1828,9 @@ CKsProxy::Get(
|
||||||
{
|
{
|
||||||
ULONG BytesReturned;
|
ULONG BytesReturned;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::Get\n");
|
OutputDebugStringW(L"CKsProxy::Get\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (cbInstanceData)
|
if (cbInstanceData)
|
||||||
{
|
{
|
||||||
|
@ -1762,7 +1871,9 @@ CKsProxy::QuerySupported(
|
||||||
KSPROPERTY Property;
|
KSPROPERTY Property;
|
||||||
ULONG BytesReturned;
|
ULONG BytesReturned;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::QuerySupported\n");
|
OutputDebugStringW(L"CKsProxy::QuerySupported\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
Property.Set = guidPropSet;
|
Property.Set = guidPropSet;
|
||||||
Property.Id = dwPropID;
|
Property.Id = dwPropID;
|
||||||
|
@ -1787,7 +1898,9 @@ CKsProxy::CreateNodeInstance(
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::CreateNodeInstance\n");
|
OutputDebugStringW(L"CKsProxy::CreateNodeInstance\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
*Interface = NULL;
|
*Interface = NULL;
|
||||||
|
|
||||||
|
@ -1812,7 +1925,9 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::KsAddAggregate(
|
CKsProxy::KsAddAggregate(
|
||||||
IN REFGUID AggregateClass)
|
IN REFGUID AggregateClass)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::KsAddAggregate NotImplemented\n");
|
OutputDebugStringW(L"CKsProxy::KsAddAggregate NotImplemented\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1821,7 +1936,10 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::KsRemoveAggregate(
|
CKsProxy::KsRemoveAggregate(
|
||||||
REFGUID AggregateClass)
|
REFGUID AggregateClass)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::KsRemoveAggregate NotImplemented\n");
|
OutputDebugStringW(L"CKsProxy::KsRemoveAggregate NotImplemented\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1834,8 +1952,10 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsProxy::IsDirty()
|
CKsProxy::IsDirty()
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::IsDirty Notimplemented\n");
|
OutputDebugStringW(L"CKsProxy::IsDirty Notimplemented\n");
|
||||||
DebugBreak();
|
DebugBreak();
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1853,7 +1973,9 @@ CKsProxy::Load(
|
||||||
ULONG PinId;
|
ULONG PinId;
|
||||||
LPOLESTR pMajor, pSub, pFormat;
|
LPOLESTR pMajor, pSub, pFormat;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::Load\n");
|
OutputDebugStringW(L"CKsProxy::Load\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
ULONG Version = ReadInt(pStm, hr);
|
ULONG Version = ReadInt(pStm, hr);
|
||||||
|
@ -1923,7 +2045,10 @@ CKsProxy::Save(
|
||||||
IStream *pStm,
|
IStream *pStm,
|
||||||
BOOL fClearDirty)
|
BOOL fClearDirty)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::Save Notimplemented\n");
|
OutputDebugStringW(L"CKsProxy::Save Notimplemented\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1932,8 +2057,11 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::GetSizeMax(
|
CKsProxy::GetSizeMax(
|
||||||
ULARGE_INTEGER *pcbSize)
|
ULARGE_INTEGER *pcbSize)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::GetSizeMax Notimplemented\n");
|
OutputDebugStringW(L"CKsProxy::GetSizeMax Notimplemented\n");
|
||||||
DebugBreak();
|
DebugBreak();
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1945,8 +2073,9 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsProxy::DeviceInfo(CLSID *pclsidInterfaceClass, LPWSTR *pwszSymbolicLink)
|
CKsProxy::DeviceInfo(CLSID *pclsidInterfaceClass, LPWSTR *pwszSymbolicLink)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::DeviceInfo\n");
|
OutputDebugStringW(L"CKsProxy::DeviceInfo\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!m_DevicePath)
|
if (!m_DevicePath)
|
||||||
{
|
{
|
||||||
|
@ -1971,7 +2100,9 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsProxy::Reassociate(void)
|
CKsProxy::Reassociate(void)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::Reassociate\n");
|
OutputDebugStringW(L"CKsProxy::Reassociate\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!m_DevicePath || m_hDevice)
|
if (!m_DevicePath || m_hDevice)
|
||||||
{
|
{
|
||||||
|
@ -1994,7 +2125,9 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsProxy::Disassociate(void)
|
CKsProxy::Disassociate(void)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::Disassociate\n");
|
OutputDebugStringW(L"CKsProxy::Disassociate\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!m_hDevice)
|
if (!m_hDevice)
|
||||||
return E_HANDLE;
|
return E_HANDLE;
|
||||||
|
@ -2012,7 +2145,10 @@ HANDLE
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsProxy::KsGetClockHandle()
|
CKsProxy::KsGetClockHandle()
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::KsGetClockHandle\n");
|
OutputDebugStringW(L"CKsProxy::KsGetClockHandle\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return m_hClock;
|
return m_hClock;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2025,7 +2161,10 @@ HANDLE
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsProxy::KsGetObjectHandle()
|
CKsProxy::KsGetObjectHandle()
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::KsGetObjectHandle\n");
|
OutputDebugStringW(L"CKsProxy::KsGetObjectHandle\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return m_hDevice;
|
return m_hDevice;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2036,7 +2175,10 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsProxy::InitNew( void)
|
CKsProxy::InitNew( void)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::InitNew\n");
|
OutputDebugStringW(L"CKsProxy::InitNew\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2323,7 +2465,6 @@ CKsProxy::CreatePins()
|
||||||
KSPIN_DATAFLOW DataFlow;
|
KSPIN_DATAFLOW DataFlow;
|
||||||
KSPIN_COMMUNICATION Communication;
|
KSPIN_COMMUNICATION Communication;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
WCHAR Buffer[100];
|
|
||||||
LPWSTR PinName;
|
LPWSTR PinName;
|
||||||
IPin * pPin;
|
IPin * pPin;
|
||||||
ULONG InputPin = 0;
|
ULONG InputPin = 0;
|
||||||
|
@ -2390,8 +2531,12 @@ CKsProxy::CreatePins()
|
||||||
// store pins
|
// store pins
|
||||||
m_Pins.push_back(pPin);
|
m_Pins.push_back(pPin);
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"Index %lu DataFlow %lu Name %s\n", Index, DataFlow, PinName);
|
swprintf(Buffer, L"Index %lu DataFlow %lu Name %s\n", Index, DataFlow, PinName);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
@ -2402,14 +2547,16 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::Load(IPropertyBag *pPropBag, IErrorLog *pErrorLog)
|
CKsProxy::Load(IPropertyBag *pPropBag, IErrorLog *pErrorLog)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
WCHAR Buffer[100];
|
|
||||||
VARIANT varName;
|
VARIANT varName;
|
||||||
LPGUID pGuid;
|
LPGUID pGuid;
|
||||||
ULONG NumGuids = 0;
|
ULONG NumGuids = 0;
|
||||||
HDEVINFO hList;
|
HDEVINFO hList;
|
||||||
SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
|
SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
|
WCHAR Buffer[100];
|
||||||
OutputDebugStringW(L"CKsProxy::Load\n");
|
OutputDebugStringW(L"CKsProxy::Load\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
// read device path
|
// read device path
|
||||||
varName.vt = VT_BSTR;
|
varName.vt = VT_BSTR;
|
||||||
|
@ -2417,14 +2564,18 @@ CKsProxy::Load(IPropertyBag *pPropBag, IErrorLog *pErrorLog)
|
||||||
|
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
swprintf(Buffer, L"CKsProxy::Load Read %lx\n", hr);
|
swprintf(Buffer, L"CKsProxy::Load Read %lx\n", hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
|
#endif
|
||||||
return MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, GetLastError());
|
return MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, GetLastError());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"DevicePath: ");
|
OutputDebugStringW(L"DevicePath: ");
|
||||||
OutputDebugStringW(varName.bstrVal);
|
OutputDebugStringW(varName.bstrVal);
|
||||||
OutputDebugStringW(L"\n");
|
OutputDebugStringW(L"\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
// create device list
|
// create device list
|
||||||
hList = SetupDiCreateDeviceInfoListExW(NULL, NULL, NULL, NULL);
|
hList = SetupDiCreateDeviceInfoListExW(NULL, NULL, NULL, NULL);
|
||||||
|
@ -2453,9 +2604,10 @@ CKsProxy::Load(IPropertyBag *pPropBag, IErrorLog *pErrorLog)
|
||||||
if (m_hDevice == INVALID_HANDLE_VALUE)
|
if (m_hDevice == INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
// failed to open device
|
// failed to open device
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
swprintf(Buffer, L"CKsProxy:: failed to open device with %lx\n", GetLastError());
|
swprintf(Buffer, L"CKsProxy:: failed to open device with %lx\n", GetLastError());
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
|
#endif
|
||||||
return MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, GetLastError());
|
return MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, GetLastError());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2493,7 +2645,9 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsProxy::Save(IPropertyBag *pPropBag, BOOL fClearDirty, BOOL fSaveAllProperties)
|
CKsProxy::Save(IPropertyBag *pPropBag, BOOL fClearDirty, BOOL fSaveAllProperties)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::Save\n");
|
OutputDebugStringW(L"CKsProxy::Save\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2506,7 +2660,9 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::GetClassID(
|
CKsProxy::GetClassID(
|
||||||
CLSID *pClassID)
|
CLSID *pClassID)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::GetClassID\n");
|
OutputDebugStringW(L"CKsProxy::GetClassID\n");
|
||||||
|
#endif
|
||||||
CopyMemory(pClassID, &CLSID_Proxy, sizeof(GUID));
|
CopyMemory(pClassID, &CLSID_Proxy, sizeof(GUID));
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
@ -2516,8 +2672,21 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsProxy::Stop()
|
CKsProxy::Stop()
|
||||||
{
|
{
|
||||||
OutputDebugStringW(L"CKsProxy::Stop : NotImplemented\n");
|
HRESULT hr;
|
||||||
return E_NOTIMPL;
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
|
OutputDebugStringW(L"CKsProxy::Stop\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
EnterCriticalSection(&m_Lock);
|
||||||
|
|
||||||
|
hr = SetPinState(KSSTATE_STOP);
|
||||||
|
if (SUCCEEDED(hr))
|
||||||
|
m_FilterState = State_Stopped;
|
||||||
|
|
||||||
|
LeaveCriticalSection(&m_Lock);
|
||||||
|
|
||||||
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT
|
HRESULT
|
||||||
|
@ -2526,17 +2695,28 @@ CKsProxy::Pause()
|
||||||
{
|
{
|
||||||
HRESULT hr = S_OK;
|
HRESULT hr = S_OK;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::Pause\n");
|
OutputDebugStringW(L"CKsProxy::Pause\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (m_FilterState == State_Stopped)
|
EnterCriticalSection(&m_Lock);
|
||||||
|
|
||||||
|
if (m_FilterState == State_Running)
|
||||||
{
|
{
|
||||||
hr = SetPinState(KSSTATE_PAUSE);
|
hr = SetPinState(KSSTATE_STOP);
|
||||||
if (FAILED(hr))
|
}
|
||||||
return hr;
|
if (SUCCEEDED(hr))
|
||||||
|
{
|
||||||
|
if (m_FilterState == State_Stopped)
|
||||||
|
{
|
||||||
|
hr = SetPinState(KSSTATE_PAUSE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_FilterState = State_Paused;
|
if (SUCCEEDED(hr))
|
||||||
|
m_FilterState = State_Paused;
|
||||||
|
|
||||||
|
LeaveCriticalSection(&m_Lock);
|
||||||
return hr;
|
return hr;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2548,23 +2728,32 @@ CKsProxy::Run(
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::Run\n");
|
OutputDebugStringW(L"CKsProxy::Run\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
EnterCriticalSection(&m_Lock);
|
||||||
|
|
||||||
if (m_FilterState == State_Stopped)
|
if (m_FilterState == State_Stopped)
|
||||||
{
|
{
|
||||||
|
LeaveCriticalSection(&m_Lock);
|
||||||
// setting filter state to pause
|
// setting filter state to pause
|
||||||
hr = Pause();
|
hr = Pause();
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
return hr;
|
return hr;
|
||||||
|
|
||||||
|
EnterCriticalSection(&m_Lock);
|
||||||
assert(m_FilterState == State_Paused);
|
assert(m_FilterState == State_Paused);
|
||||||
}
|
}
|
||||||
|
|
||||||
hr = SetPinState(KSSTATE_RUN);
|
hr = SetPinState(KSSTATE_RUN);
|
||||||
if (FAILED(hr))
|
|
||||||
return hr;
|
|
||||||
|
|
||||||
m_FilterState = State_Running;
|
if (SUCCEEDED(hr))
|
||||||
|
{
|
||||||
|
m_FilterState = State_Running;
|
||||||
|
}
|
||||||
|
|
||||||
|
LeaveCriticalSection(&m_Lock);
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2631,9 +2820,11 @@ CKsProxy::SetPinState(
|
||||||
// now set state
|
// now set state
|
||||||
hr = KsSynchronousDeviceControl(hPin, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)&State, sizeof(KSSTATE), &BytesReturned);
|
hr = KsSynchronousDeviceControl(hPin, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)&State, sizeof(KSSTATE), &BytesReturned);
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
swprintf(Buffer, L"CKsProxy::SetPinState Index %u State %u hr %lx\n", Index, State, hr);
|
swprintf(Buffer, L"CKsProxy::SetPinState Index %u State %u hr %lx\n", Index, State, hr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
return hr;
|
return hr;
|
||||||
|
@ -2647,6 +2838,9 @@ CKsProxy::GetState(
|
||||||
DWORD dwMilliSecsTimeout,
|
DWORD dwMilliSecsTimeout,
|
||||||
FILTER_STATE *State)
|
FILTER_STATE *State)
|
||||||
{
|
{
|
||||||
|
if (!State)
|
||||||
|
return E_POINTER;
|
||||||
|
|
||||||
*State = m_FilterState;
|
*State = m_FilterState;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
@ -2666,8 +2860,9 @@ CKsProxy::SetSyncSource(
|
||||||
ULONG BytesReturned;
|
ULONG BytesReturned;
|
||||||
PIN_DIRECTION PinDir;
|
PIN_DIRECTION PinDir;
|
||||||
|
|
||||||
// Plug In Distributor: IKsClock
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::SetSyncSource\n");
|
OutputDebugStringW(L"CKsProxy::SetSyncSource\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
// FIXME
|
// FIXME
|
||||||
// need locks
|
// need locks
|
||||||
|
@ -2761,7 +2956,9 @@ CKsProxy::SetSyncSource(
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ReferenceClock = pClock;
|
m_ReferenceClock = pClock;
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::SetSyncSource done\n");
|
OutputDebugStringW(L"CKsProxy::SetSyncSource done\n");
|
||||||
|
#endif
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2770,7 +2967,9 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::GetSyncSource(
|
CKsProxy::GetSyncSource(
|
||||||
IReferenceClock **pClock)
|
IReferenceClock **pClock)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::GetSyncSource\n");
|
OutputDebugStringW(L"CKsProxy::GetSyncSource\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!pClock)
|
if (!pClock)
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
|
@ -2787,7 +2986,10 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::EnumPins(
|
CKsProxy::EnumPins(
|
||||||
IEnumPins **ppEnum)
|
IEnumPins **ppEnum)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::EnumPins\n");
|
OutputDebugStringW(L"CKsProxy::EnumPins\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return CEnumPins_fnConstructor(m_Pins, IID_IEnumPins, (void**)ppEnum);
|
return CEnumPins_fnConstructor(m_Pins, IID_IEnumPins, (void**)ppEnum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2798,7 +3000,9 @@ CKsProxy::FindPin(
|
||||||
{
|
{
|
||||||
ULONG PinId;
|
ULONG PinId;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::FindPin\n");
|
OutputDebugStringW(L"CKsProxy::FindPin\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!ppPin)
|
if (!ppPin)
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
|
@ -2834,7 +3038,9 @@ CKsProxy::QueryFilterInfo(
|
||||||
if (!pInfo)
|
if (!pInfo)
|
||||||
return E_POINTER;
|
return E_POINTER;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::QueryFilterInfo\n");
|
OutputDebugStringW(L"CKsProxy::QueryFilterInfo\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
pInfo->achName[0] = L'\0';
|
pInfo->achName[0] = L'\0';
|
||||||
pInfo->pGraph = m_pGraph;
|
pInfo->pGraph = m_pGraph;
|
||||||
|
@ -2851,7 +3057,11 @@ CKsProxy::JoinFilterGraph(
|
||||||
IFilterGraph *pGraph,
|
IFilterGraph *pGraph,
|
||||||
LPCWSTR pName)
|
LPCWSTR pName)
|
||||||
{
|
{
|
||||||
OutputDebugStringW(L"CKsProxy::JoinFilterGraph\n");
|
#ifdef KSPROXY_TRACE
|
||||||
|
WCHAR Buffer[100];
|
||||||
|
swprintf(Buffer, L"CKsProxy::JoinFilterGraph pName %s pGraph %p m_Ref %u\n", pName, pGraph, m_Ref);
|
||||||
|
OutputDebugStringW(Buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (pGraph)
|
if (pGraph)
|
||||||
{
|
{
|
||||||
|
@ -2873,7 +3083,9 @@ STDMETHODCALLTYPE
|
||||||
CKsProxy::QueryVendorInfo(
|
CKsProxy::QueryVendorInfo(
|
||||||
LPWSTR *pVendorInfo)
|
LPWSTR *pVendorInfo)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::QueryVendorInfo\n");
|
OutputDebugStringW(L"CKsProxy::QueryVendorInfo\n");
|
||||||
|
#endif
|
||||||
return StringFromCLSID(CLSID_Proxy, pVendorInfo);
|
return StringFromCLSID(CLSID_Proxy, pVendorInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2885,7 +3097,10 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsProxy::Register()
|
CKsProxy::Register()
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::Register : NotImplemented\n");
|
OutputDebugStringW(L"CKsProxy::Register : NotImplemented\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2893,7 +3108,9 @@ HRESULT
|
||||||
STDMETHODCALLTYPE
|
STDMETHODCALLTYPE
|
||||||
CKsProxy::Unregister()
|
CKsProxy::Unregister()
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsProxy::Unregister : NotImplemented\n");
|
OutputDebugStringW(L"CKsProxy::Unregister : NotImplemented\n");
|
||||||
|
#endif
|
||||||
return E_NOTIMPL;
|
return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2904,11 +3121,13 @@ CKsProxy_Constructor(
|
||||||
REFIID riid,
|
REFIID riid,
|
||||||
LPVOID * ppv)
|
LPVOID * ppv)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
WCHAR Buffer[100];
|
WCHAR Buffer[100];
|
||||||
LPOLESTR pstr;
|
LPOLESTR pstr;
|
||||||
StringFromCLSID(riid, &pstr);
|
StringFromCLSID(riid, &pstr);
|
||||||
swprintf(Buffer, L"CKsProxy_Constructor pUnkOuter %p riid %s\n", pUnkOuter, pstr);
|
swprintf(Buffer, L"CKsProxy_Constructor pUnkOuter %p riid %s\n", pUnkOuter, pstr);
|
||||||
OutputDebugStringW(Buffer);
|
OutputDebugStringW(Buffer);
|
||||||
|
#endif
|
||||||
|
|
||||||
CKsProxy * handler = new CKsProxy();
|
CKsProxy * handler = new CKsProxy();
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,9 @@ STDMETHODCALLTYPE
|
||||||
CKsQualityForwarder::KsFlushClient(
|
CKsQualityForwarder::KsFlushClient(
|
||||||
IN IKsPin *Pin)
|
IN IKsPin *Pin)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugString("UNIMPLEMENTED\n");
|
OutputDebugString("UNIMPLEMENTED\n");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT
|
HRESULT
|
||||||
|
@ -101,14 +103,18 @@ CKsQualityForwarder_Constructor(
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
HANDLE handle;
|
HANDLE handle;
|
||||||
|
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugStringW(L"CKsQualityForwarder_Constructor\n");
|
OutputDebugStringW(L"CKsQualityForwarder_Constructor\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
// open default clock
|
// open default clock
|
||||||
hr = KsOpenDefaultDevice(KSCATEGORY_QUALITY, GENERIC_READ | GENERIC_WRITE, &handle);
|
hr = KsOpenDefaultDevice(KSCATEGORY_QUALITY, GENERIC_READ | GENERIC_WRITE, &handle);
|
||||||
|
|
||||||
if (hr != NOERROR)
|
if (hr != NOERROR)
|
||||||
{
|
{
|
||||||
|
#ifdef KSPROXY_TRACE
|
||||||
OutputDebugString("CKsClockForwarder_Constructor failed to open device\n");
|
OutputDebugString("CKsClockForwarder_Constructor failed to open device\n");
|
||||||
|
#endif
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
LIBRARY "idndl.dll"
|
|
||||||
|
|
||||||
EXPORTS
|
|
||||||
DownlevelGetLocaleScripts = DownlevelGetLocaleScripts@12 @1
|
|
||||||
DownlevelGetStringScripts@20 = kernel32.GetStringScripts @2
|
|
||||||
DownlevelVerifyScripts@20 = kernel32.VerifyScripts @3
|
|
|
@ -7,5 +7,5 @@
|
||||||
</group>
|
</group>
|
||||||
<redefine name="WINVER">0x600</redefine>
|
<redefine name="WINVER">0x600</redefine>
|
||||||
<file>idndl.cpp</file>
|
<file>idndl.cpp</file>
|
||||||
<importlibrary definition="idndl-$(ARCH).def" />
|
<importlibrary definition="idndl.spec" />
|
||||||
</module>
|
</module>
|
||||||
|
|
4
reactos/dll/nls/idndl/idndl.spec
Normal file
4
reactos/dll/nls/idndl/idndl.spec
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
|
||||||
|
1 stdcall DownlevelGetLocaleScripts(ptr ptr long) DownlevelGetLocaleScripts
|
||||||
|
2 stdcall DownlevelGetStringScripts(long ptr long ptr long) kernel32.GetStringScripts
|
||||||
|
3 stdcall DownlevelVerifyScripts(long ptr long ptr long) kernel32.VerifyScripts
|
|
@ -16,8 +16,7 @@
|
||||||
* License along with this library; if not, write to the Free Software
|
* License along with this library; if not, write to the Free Software
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
/* $Id$
|
/*
|
||||||
*
|
|
||||||
* PROJECT: ReactOS Access Control List Editor
|
* PROJECT: ReactOS Access Control List Editor
|
||||||
* FILE: lib/acledit/acledit.c
|
* FILE: lib/acledit/acledit.c
|
||||||
* PURPOSE: Access Control List Editor
|
* PURPOSE: Access Control List Editor
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
/* $Id$
|
/*
|
||||||
*
|
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS Access Control List Editor
|
* PROJECT: ReactOS Access Control List Editor
|
||||||
* FILE: lib/acledit/stubs.c
|
* FILE: lib/acledit/stubs.c
|
||||||
|
|
|
@ -416,8 +416,8 @@ HRESULT STDMETHODCALLTYPE CMenuCallback::CallbackSM(LPSMDATA psmd, UINT uMsg, WP
|
||||||
if ((infoPtr->dwMask & SMIM_FLAGS) != 0)
|
if ((infoPtr->dwMask & SMIM_FLAGS) != 0)
|
||||||
if (psmd->uId == FCIDM_MENU_FAVORITES)
|
if (psmd->uId == FCIDM_MENU_FAVORITES)
|
||||||
infoPtr->dwFlags |= SMIF_DROPCASCADE;
|
infoPtr->dwFlags |= SMIF_DROPCASCADE;
|
||||||
else
|
else{
|
||||||
infoPtr->dwFlags |= SMIF_TRACKPOPUP;
|
infoPtr->dwFlags |= SMIF_TRACKPOPUP;}
|
||||||
if ((infoPtr->dwMask & SMIM_ICON) != 0)
|
if ((infoPtr->dwMask & SMIM_ICON) != 0)
|
||||||
infoPtr->iIcon = -1;
|
infoPtr->iIcon = -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -292,7 +292,7 @@ CreateBitmap(INT Width,
|
||||||
INT Height,
|
INT Height,
|
||||||
UINT Planes,
|
UINT Planes,
|
||||||
UINT BitsPixel,
|
UINT BitsPixel,
|
||||||
PCVOID pUnsafeBits)
|
CONST VOID* pUnsafeBits)
|
||||||
{
|
{
|
||||||
/* FIXME some part should be done in user mode */
|
/* FIXME some part should be done in user mode */
|
||||||
if (Width && Height)
|
if (Width && Height)
|
||||||
|
|
|
@ -10,7 +10,6 @@ typedef VOID
|
||||||
typedef VOID
|
typedef VOID
|
||||||
(WINAPI *PINTERFACE_DEREFERENCE)(
|
(WINAPI *PINTERFACE_DEREFERENCE)(
|
||||||
PVOID Context);
|
PVOID Context);
|
||||||
#define DDKAPI __stdcall // FIXME
|
|
||||||
#include <ntndk.h>
|
#include <ntndk.h>
|
||||||
#include <hidusage.h>
|
#include <hidusage.h>
|
||||||
#include <hidclass.h>
|
#include <hidclass.h>
|
||||||
|
|
|
@ -47,7 +47,7 @@ ConvertFiberToThread(VOID)
|
||||||
pTeb->HasFiberData = FALSE;
|
pTeb->HasFiberData = FALSE;
|
||||||
|
|
||||||
/* free the fiber */
|
/* free the fiber */
|
||||||
if (pTeb->NtTib.FiberData != NULL)
|
if(pTeb->NtTib.FiberData != NULL)
|
||||||
{
|
{
|
||||||
RtlFreeHeap(GetProcessHeap(), 0, pTeb->NtTib.FiberData);
|
RtlFreeHeap(GetProcessHeap(), 0, pTeb->NtTib.FiberData);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
<define name="wcsnicmp">_wcsnicmp</define>
|
<define name="wcsnicmp">_wcsnicmp</define>
|
||||||
|
|
||||||
<define name="_SETUPAPI_" />
|
<define name="_SETUPAPI_" />
|
||||||
|
<define name="_CFGMGR32_" />
|
||||||
<library>pnp_client</library>
|
<library>pnp_client</library>
|
||||||
<library>uuid</library>
|
<library>uuid</library>
|
||||||
<library>wine</library>
|
<library>wine</library>
|
||||||
|
|
|
@ -45,11 +45,6 @@
|
||||||
|
|
||||||
#include <pseh/pseh2.h>
|
#include <pseh/pseh2.h>
|
||||||
|
|
||||||
/* This hack definition is necessary as long as setupapi
|
|
||||||
depends on Wine "compatibility" headers */
|
|
||||||
typedef ULONG RESOURCEID;
|
|
||||||
typedef RESOURCEID *PRESOURCEID;
|
|
||||||
|
|
||||||
#include <pnp_c.h>
|
#include <pnp_c.h>
|
||||||
#include "rpc_private.h"
|
#include "rpc_private.h"
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
|
@ -61,6 +56,8 @@ typedef RESOURCEID *PRESOURCEID;
|
||||||
#define SETUP_DEVICE_INFO_SET_MAGIC 0xd00ff057
|
#define SETUP_DEVICE_INFO_SET_MAGIC 0xd00ff057
|
||||||
#define SETUP_CLASS_IMAGE_LIST_MAGIC 0xd00ff058
|
#define SETUP_CLASS_IMAGE_LIST_MAGIC 0xd00ff058
|
||||||
|
|
||||||
|
#define CMP_MAGIC 0x01234567
|
||||||
|
|
||||||
struct DeviceInterface /* Element of DeviceInfo.InterfaceListHead */
|
struct DeviceInterface /* Element of DeviceInfo.InterfaceListHead */
|
||||||
{
|
{
|
||||||
LIST_ENTRY ListEntry;
|
LIST_ENTRY ListEntry;
|
||||||
|
|
|
@ -23,7 +23,7 @@ DriverEntry(PDRIVER_OBJECT DriverObject,
|
||||||
|
|
||||||
BCLASSAPI
|
BCLASSAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
DDKAPI
|
NTAPI
|
||||||
BatteryClassUnload(PVOID ClassData)
|
BatteryClassUnload(PVOID ClassData)
|
||||||
{
|
{
|
||||||
PBATTERY_CLASS_DATA BattClass = ClassData;
|
PBATTERY_CLASS_DATA BattClass = ClassData;
|
||||||
|
@ -44,7 +44,7 @@ BatteryClassUnload(PVOID ClassData)
|
||||||
|
|
||||||
BCLASSAPI
|
BCLASSAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
DDKAPI
|
NTAPI
|
||||||
BatteryClassSystemControl(PVOID ClassData,
|
BatteryClassSystemControl(PVOID ClassData,
|
||||||
PVOID WmiLibContext,
|
PVOID WmiLibContext,
|
||||||
PDEVICE_OBJECT DeviceObject,
|
PDEVICE_OBJECT DeviceObject,
|
||||||
|
@ -58,7 +58,7 @@ BatteryClassSystemControl(PVOID ClassData,
|
||||||
|
|
||||||
BCLASSAPI
|
BCLASSAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
DDKAPI
|
NTAPI
|
||||||
BatteryClassQueryWmiDataBlock(PVOID ClassData,
|
BatteryClassQueryWmiDataBlock(PVOID ClassData,
|
||||||
PDEVICE_OBJECT DeviceObject,
|
PDEVICE_OBJECT DeviceObject,
|
||||||
PIRP Irp,
|
PIRP Irp,
|
||||||
|
@ -74,7 +74,7 @@ BatteryClassQueryWmiDataBlock(PVOID ClassData,
|
||||||
|
|
||||||
BCLASSAPI
|
BCLASSAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
DDKAPI
|
NTAPI
|
||||||
BatteryClassStatusNotify(PVOID ClassData)
|
BatteryClassStatusNotify(PVOID ClassData)
|
||||||
{
|
{
|
||||||
PBATTERY_CLASS_DATA BattClass = ClassData;
|
PBATTERY_CLASS_DATA BattClass = ClassData;
|
||||||
|
@ -129,7 +129,7 @@ BatteryClassStatusNotify(PVOID ClassData)
|
||||||
|
|
||||||
BCLASSAPI
|
BCLASSAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
DDKAPI
|
NTAPI
|
||||||
BatteryClassInitializeDevice(PBATTERY_MINIPORT_INFO MiniportInfo,
|
BatteryClassInitializeDevice(PBATTERY_MINIPORT_INFO MiniportInfo,
|
||||||
PVOID *ClassData)
|
PVOID *ClassData)
|
||||||
{
|
{
|
||||||
|
@ -172,7 +172,7 @@ BatteryClassInitializeDevice(PBATTERY_MINIPORT_INFO MiniportInfo,
|
||||||
|
|
||||||
BCLASSAPI
|
BCLASSAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
DDKAPI
|
NTAPI
|
||||||
BatteryClassIoctl(PVOID ClassData,
|
BatteryClassIoctl(PVOID ClassData,
|
||||||
PIRP Irp)
|
PIRP Irp)
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,6 +7,9 @@
|
||||||
<directory name="cmbatt">
|
<directory name="cmbatt">
|
||||||
<xi:include href="cmbatt/cmbatt.rbuild" />
|
<xi:include href="cmbatt/cmbatt.rbuild" />
|
||||||
</directory>
|
</directory>
|
||||||
|
<directory name="compbatt">
|
||||||
|
<xi:include href="compbatt/compbatt.rbuild" />
|
||||||
|
</directory>
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
<module name="acpi" type="kernelmodedriver" installbase="system32/drivers" installname="acpi.sys" allowwarnings="true">
|
<module name="acpi" type="kernelmodedriver" installbase="system32/drivers" installname="acpi.sys" allowwarnings="true">
|
||||||
|
@ -26,6 +29,7 @@
|
||||||
</directory>
|
</directory>
|
||||||
<file>osl.c</file>
|
<file>osl.c</file>
|
||||||
<file>acpienum.c</file>
|
<file>acpienum.c</file>
|
||||||
|
<file>eval.c</file>
|
||||||
<file>interface.c</file>
|
<file>interface.c</file>
|
||||||
<file>pnp.c</file>
|
<file>pnp.c</file>
|
||||||
<file>power.c</file>
|
<file>power.c</file>
|
||||||
|
|
|
@ -58,6 +58,7 @@ KSPIN_LOCK acpi_bus_event_lock;
|
||||||
LIST_HEAD(acpi_bus_event_list);
|
LIST_HEAD(acpi_bus_event_list);
|
||||||
//DECLARE_WAIT_QUEUE_HEAD(acpi_bus_event_queue);
|
//DECLARE_WAIT_QUEUE_HEAD(acpi_bus_event_queue);
|
||||||
KEVENT AcpiEventQueue;
|
KEVENT AcpiEventQueue;
|
||||||
|
KDPC event_dpc;
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -455,6 +456,21 @@ acpi_bus_get_perf_flags (
|
||||||
Event Management
|
Event Management
|
||||||
-------------------------------------------------------------------------- */
|
-------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void
|
||||||
|
acpi_bus_generate_event_dpc(PKDPC Dpc,
|
||||||
|
PVOID DeferredContext,
|
||||||
|
PVOID SystemArgument1,
|
||||||
|
PVOID SystemArgument2)
|
||||||
|
{
|
||||||
|
struct acpi_bus_event *event = SystemArgument1;
|
||||||
|
KIRQL OldIrql;
|
||||||
|
|
||||||
|
KeAcquireSpinLock(&acpi_bus_event_lock, &OldIrql);
|
||||||
|
list_add_tail(&event->node, &acpi_bus_event_list);
|
||||||
|
KeReleaseSpinLock(&acpi_bus_event_lock, OldIrql);
|
||||||
|
|
||||||
|
KeSetEvent(&AcpiEventQueue, IO_NO_INCREMENT, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
acpi_bus_generate_event (
|
acpi_bus_generate_event (
|
||||||
|
@ -463,10 +479,8 @@ acpi_bus_generate_event (
|
||||||
int data)
|
int data)
|
||||||
{
|
{
|
||||||
struct acpi_bus_event *event = NULL;
|
struct acpi_bus_event *event = NULL;
|
||||||
//unsigned long flags = 0;
|
|
||||||
KIRQL OldIrql;
|
|
||||||
|
|
||||||
DPRINT1("acpi_bus_generate_event");
|
DPRINT("acpi_bus_generate_event");
|
||||||
|
|
||||||
if (!device)
|
if (!device)
|
||||||
return_VALUE(AE_BAD_PARAMETER);
|
return_VALUE(AE_BAD_PARAMETER);
|
||||||
|
@ -484,14 +498,8 @@ acpi_bus_generate_event (
|
||||||
event->type = type;
|
event->type = type;
|
||||||
event->data = data;
|
event->data = data;
|
||||||
|
|
||||||
//spin_lock_irqsave(&acpi_bus_event_lock, flags);
|
if (!KeInsertQueueDpc(&event_dpc, event, NULL))
|
||||||
KeAcquireSpinLock(&acpi_bus_event_lock, &OldIrql);
|
ExFreePool(event);
|
||||||
list_add_tail(&event->node, &acpi_bus_event_list);
|
|
||||||
KeReleaseSpinLock(&acpi_bus_event_lock, OldIrql);
|
|
||||||
//spin_unlock_irqrestore(&acpi_bus_event_lock, flags);
|
|
||||||
|
|
||||||
KeSetEvent(&AcpiEventQueue, IO_NO_INCREMENT, FALSE);
|
|
||||||
//wake_up_interruptible(&acpi_bus_event_queue);
|
|
||||||
|
|
||||||
return_VALUE(0);
|
return_VALUE(0);
|
||||||
}
|
}
|
||||||
|
@ -506,7 +514,7 @@ acpi_bus_receive_event (
|
||||||
|
|
||||||
//DECLARE_WAITQUEUE(wait, current);
|
//DECLARE_WAITQUEUE(wait, current);
|
||||||
|
|
||||||
DPRINT1("acpi_bus_receive_event");
|
DPRINT("acpi_bus_receive_event");
|
||||||
|
|
||||||
if (!event)
|
if (!event)
|
||||||
return AE_BAD_PARAMETER;
|
return AE_BAD_PARAMETER;
|
||||||
|
@ -1153,9 +1161,11 @@ acpi_bus_add (
|
||||||
case ACPI_BUS_TYPE_SYSTEM:
|
case ACPI_BUS_TYPE_SYSTEM:
|
||||||
sprintf(device->pnp.bus_id, "%s", "ACPI");
|
sprintf(device->pnp.bus_id, "%s", "ACPI");
|
||||||
break;
|
break;
|
||||||
|
case ACPI_BUS_TYPE_POWER_BUTTONF:
|
||||||
case ACPI_BUS_TYPE_POWER_BUTTON:
|
case ACPI_BUS_TYPE_POWER_BUTTON:
|
||||||
sprintf(device->pnp.bus_id, "%s", "PWRF");
|
sprintf(device->pnp.bus_id, "%s", "PWRF");
|
||||||
break;
|
break;
|
||||||
|
case ACPI_BUS_TYPE_SLEEP_BUTTONF:
|
||||||
case ACPI_BUS_TYPE_SLEEP_BUTTON:
|
case ACPI_BUS_TYPE_SLEEP_BUTTON:
|
||||||
sprintf(device->pnp.bus_id, "%s", "SLPF");
|
sprintf(device->pnp.bus_id, "%s", "SLPF");
|
||||||
break;
|
break;
|
||||||
|
@ -1262,9 +1272,15 @@ acpi_bus_add (
|
||||||
hid = ACPI_THERMAL_HID;
|
hid = ACPI_THERMAL_HID;
|
||||||
break;
|
break;
|
||||||
case ACPI_BUS_TYPE_POWER_BUTTON:
|
case ACPI_BUS_TYPE_POWER_BUTTON:
|
||||||
|
hid = ACPI_BUTTON_HID_POWER;
|
||||||
|
break;
|
||||||
|
case ACPI_BUS_TYPE_POWER_BUTTONF:
|
||||||
hid = ACPI_BUTTON_HID_POWERF;
|
hid = ACPI_BUTTON_HID_POWERF;
|
||||||
break;
|
break;
|
||||||
case ACPI_BUS_TYPE_SLEEP_BUTTON:
|
case ACPI_BUS_TYPE_SLEEP_BUTTON:
|
||||||
|
hid = ACPI_BUTTON_HID_SLEEP;
|
||||||
|
break;
|
||||||
|
case ACPI_BUS_TYPE_SLEEP_BUTTONF:
|
||||||
hid = ACPI_BUTTON_HID_SLEEPF;
|
hid = ACPI_BUTTON_HID_SLEEPF;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1326,7 +1342,9 @@ acpi_bus_add (
|
||||||
*/
|
*/
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case ACPI_BUS_TYPE_POWER_BUTTON:
|
case ACPI_BUS_TYPE_POWER_BUTTON:
|
||||||
|
case ACPI_BUS_TYPE_POWER_BUTTONF:
|
||||||
case ACPI_BUS_TYPE_SLEEP_BUTTON:
|
case ACPI_BUS_TYPE_SLEEP_BUTTON:
|
||||||
|
case ACPI_BUS_TYPE_SLEEP_BUTTONF:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
status = AcpiAttachData(device->handle,
|
status = AcpiAttachData(device->handle,
|
||||||
|
@ -1530,16 +1548,40 @@ acpi_bus_scan_fixed (
|
||||||
if (!root)
|
if (!root)
|
||||||
return_VALUE(AE_NOT_FOUND);
|
return_VALUE(AE_NOT_FOUND);
|
||||||
|
|
||||||
/*
|
/* If ACPI_FADT_POWER_BUTTON is set, then a control
|
||||||
* Enumerate all fixed-feature devices.
|
* method power button is present. Otherwise, a fixed
|
||||||
|
* power button is present.
|
||||||
*/
|
*/
|
||||||
if (AcpiGbl_FADT.Flags & ACPI_FADT_POWER_BUTTON)
|
if (AcpiGbl_FADT.Flags & ACPI_FADT_POWER_BUTTON)
|
||||||
result = acpi_bus_add(&device, acpi_root,
|
result = acpi_bus_add(&device, acpi_root,
|
||||||
NULL, ACPI_BUS_TYPE_POWER_BUTTON);
|
NULL, ACPI_BUS_TYPE_POWER_BUTTON);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Enable the fixed power button so we get notified if it is pressed */
|
||||||
|
AcpiWriteBitRegister(ACPI_BITREG_POWER_BUTTON_ENABLE, 1);
|
||||||
|
|
||||||
|
result = acpi_bus_add(&device, acpi_root,
|
||||||
|
NULL, ACPI_BUS_TYPE_POWER_BUTTONF);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This one is a bit more complicated and we do it wrong
|
||||||
|
* right now. If ACPI_FADT_SLEEP_BUTTON is set but no
|
||||||
|
* device object is present then no sleep button is present, but
|
||||||
|
* if the flags is clear and there is no device object then it is
|
||||||
|
* a fixed sleep button. If the flag is set and there is a device object
|
||||||
|
* the we have a control method button just like above.
|
||||||
|
*/
|
||||||
if (AcpiGbl_FADT.Flags & ACPI_FADT_SLEEP_BUTTON)
|
if (AcpiGbl_FADT.Flags & ACPI_FADT_SLEEP_BUTTON)
|
||||||
result = acpi_bus_add(&device, acpi_root,
|
result = acpi_bus_add(&device, acpi_root,
|
||||||
NULL, ACPI_BUS_TYPE_SLEEP_BUTTON);
|
NULL, ACPI_BUS_TYPE_SLEEP_BUTTON);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Enable the fixed sleep button so we get notified if it is pressed */
|
||||||
|
AcpiWriteBitRegister(ACPI_BITREG_SLEEP_BUTTON_ENABLE, 1);
|
||||||
|
|
||||||
|
result = acpi_bus_add(&device, acpi_root,
|
||||||
|
NULL, ACPI_BUS_TYPE_SLEEP_BUTTONF);
|
||||||
|
}
|
||||||
|
|
||||||
return_VALUE(result);
|
return_VALUE(result);
|
||||||
}
|
}
|
||||||
|
@ -1549,120 +1591,6 @@ acpi_bus_scan_fixed (
|
||||||
Initialization/Cleanup
|
Initialization/Cleanup
|
||||||
-------------------------------------------------------------------------- */
|
-------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static int
|
|
||||||
acpi_bus_init_irq (void)
|
|
||||||
{
|
|
||||||
ACPI_STATUS status = AE_OK;
|
|
||||||
ACPI_OBJECT arg = {ACPI_TYPE_INTEGER};
|
|
||||||
ACPI_OBJECT_LIST arg_list = {1, &arg};
|
|
||||||
//char *message = NULL;
|
|
||||||
|
|
||||||
DPRINT("acpi_bus_init_irq");
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Let the system know what interrupt model we are using by
|
|
||||||
* evaluating the \_PIC object, if exists.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//switch (acpi_irq_model) {
|
|
||||||
//case ACPI_IRQ_MODEL_PIC:
|
|
||||||
// message = "PIC";
|
|
||||||
// break;
|
|
||||||
//case ACPI_IRQ_MODEL_IOAPIC:
|
|
||||||
// message = "IOAPIC";
|
|
||||||
// break;
|
|
||||||
//case ACPI_IRQ_MODEL_IOSAPIC:
|
|
||||||
// message = "IOSAPIC";
|
|
||||||
// break;
|
|
||||||
//default:
|
|
||||||
// DPRINT1("Unknown interrupt routing model\n");
|
|
||||||
// return_VALUE(AE_NOT_FOUND);
|
|
||||||
//}
|
|
||||||
|
|
||||||
//DPRINT("Using %s for interrupt routing\n", message);
|
|
||||||
|
|
||||||
//arg.Integer.Value = acpi_irq_model;
|
|
||||||
|
|
||||||
//status = AcpiEvaluateObject(NULL, "\\_PIC", &arg_list, NULL);
|
|
||||||
//if (ACPI_FAILURE(status) && (status != AE_NOT_FOUND)) {
|
|
||||||
// ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error evaluating _PIC\n"));
|
|
||||||
// return_VALUE(AE_NOT_FOUND);
|
|
||||||
//}
|
|
||||||
|
|
||||||
return_VALUE(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//void
|
|
||||||
//acpi_early_init (void)
|
|
||||||
//{
|
|
||||||
// ACPI_STATUS status = AE_OK;
|
|
||||||
//
|
|
||||||
// DPRINT("acpi_early_init");
|
|
||||||
//
|
|
||||||
// if (acpi_disabled)
|
|
||||||
// return_VOID;
|
|
||||||
//
|
|
||||||
/* enable workarounds, unless strict ACPI spec. compliance */
|
|
||||||
// if (!acpi_strict)
|
|
||||||
// acpi_gbl_enable_interpreter_slack = TRUE;
|
|
||||||
//
|
|
||||||
// status = acpi_reallocate_root_table();
|
|
||||||
// if (ACPI_FAILURE(status)) {
|
|
||||||
// printk(KERN_ERR PREFIX
|
|
||||||
// "Unable to reallocate ACPI tables\n");
|
|
||||||
// goto error0;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// status = acpi_initialize_subsystem();
|
|
||||||
// if (ACPI_FAILURE(status)) {
|
|
||||||
// printk(KERN_ERR PREFIX
|
|
||||||
// "Unable to initialize the ACPI Interpreter\n");
|
|
||||||
// goto error0;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// status = acpi_load_tables();
|
|
||||||
// if (ACPI_FAILURE(status)) {
|
|
||||||
// printk(KERN_ERR PREFIX
|
|
||||||
// "Unable to load the System Description Tables\n");
|
|
||||||
// goto error0;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//#ifdef CONFIG_X86
|
|
||||||
// if (!acpi_ioapic) {
|
|
||||||
// /* compatible (0) means level (3) */
|
|
||||||
// if (!(acpi_sci_flags & ACPI_MADT_TRIGGER_MASK)) {
|
|
||||||
// acpi_sci_flags &= ~ACPI_MADT_TRIGGER_MASK;
|
|
||||||
// acpi_sci_flags |= ACPI_MADT_TRIGGER_LEVEL;
|
|
||||||
// }
|
|
||||||
// /* Set PIC-mode SCI trigger type */
|
|
||||||
// acpi_pic_sci_set_trigger(acpi_gbl_FADT.sci_interrupt,
|
|
||||||
// (acpi_sci_flags & ACPI_MADT_TRIGGER_MASK) >> 2);
|
|
||||||
// } else {
|
|
||||||
// /*
|
|
||||||
// * now that acpi_gbl_FADT is initialized,
|
|
||||||
// * update it with result from INT_SRC_OVR parsing
|
|
||||||
// */
|
|
||||||
// acpi_gbl_FADT.sci_interrupt = acpi_sci_override_gsi;
|
|
||||||
// }
|
|
||||||
//#endif
|
|
||||||
//
|
|
||||||
// status =
|
|
||||||
// acpi_enable_subsystem(~
|
|
||||||
// (ACPI_NO_HARDWARE_INIT |
|
|
||||||
// ACPI_NO_ACPI_ENABLE));
|
|
||||||
// if (ACPI_FAILURE(status)) {
|
|
||||||
// printk(KERN_ERR PREFIX "Unable to enable ACPI\n");
|
|
||||||
// goto error0;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// return;
|
|
||||||
//
|
|
||||||
// error0:
|
|
||||||
// disable_acpi();
|
|
||||||
// return;
|
|
||||||
//}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
acpi_bus_init (void)
|
acpi_bus_init (void)
|
||||||
{
|
{
|
||||||
|
@ -1671,6 +1599,8 @@ acpi_bus_init (void)
|
||||||
|
|
||||||
DPRINT("acpi_bus_init");
|
DPRINT("acpi_bus_init");
|
||||||
|
|
||||||
|
KeInitializeDpc(&event_dpc, acpi_bus_generate_event_dpc, NULL);
|
||||||
|
|
||||||
status = AcpiEnableSubsystem(ACPI_FULL_INITIALIZATION);
|
status = AcpiEnableSubsystem(ACPI_FULL_INITIALIZATION);
|
||||||
if (ACPI_FAILURE(status)) {
|
if (ACPI_FAILURE(status)) {
|
||||||
DPRINT1("Unable to start the ACPI Interpreter\n");
|
DPRINT1("Unable to start the ACPI Interpreter\n");
|
||||||
|
@ -1701,13 +1631,6 @@ acpi_bus_init (void)
|
||||||
/* Initialize sleep structures */
|
/* Initialize sleep structures */
|
||||||
//acpi_sleep_init();
|
//acpi_sleep_init();
|
||||||
|
|
||||||
/*
|
|
||||||
* Get the system interrupt model and evaluate \_PIC.
|
|
||||||
*/
|
|
||||||
result = acpi_bus_init_irq();
|
|
||||||
if (result)
|
|
||||||
goto error1;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Register the for all standard device notifications.
|
* Register the for all standard device notifications.
|
||||||
*/
|
*/
|
||||||
|
@ -1726,6 +1649,7 @@ acpi_bus_init (void)
|
||||||
if (result)
|
if (result)
|
||||||
goto error2;
|
goto error2;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Enumerate devices in the ACPI namespace.
|
* Enumerate devices in the ACPI namespace.
|
||||||
*/
|
*/
|
||||||
|
@ -1736,7 +1660,6 @@ acpi_bus_init (void)
|
||||||
if (result)
|
if (result)
|
||||||
DPRINT1("acpi_bus_scan failed\n");
|
DPRINT1("acpi_bus_scan failed\n");
|
||||||
|
|
||||||
//acpi_motherboard_init();
|
|
||||||
return_VALUE(0);
|
return_VALUE(0);
|
||||||
|
|
||||||
/* Mimic structured exception handling */
|
/* Mimic structured exception handling */
|
||||||
|
|
|
@ -57,6 +57,11 @@ struct acpi_button {
|
||||||
UINT8 type;
|
UINT8 type;
|
||||||
unsigned long pushed;
|
unsigned long pushed;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct acpi_device *power_button;
|
||||||
|
struct acpi_device *sleep_button;
|
||||||
|
struct acpi_device *lid_button;
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------
|
||||||
Driver Interface
|
Driver Interface
|
||||||
-------------------------------------------------------------------------- */
|
-------------------------------------------------------------------------- */
|
||||||
|
@ -113,10 +118,6 @@ acpi_button_add (
|
||||||
ACPI_STATUS status = AE_OK;
|
ACPI_STATUS status = AE_OK;
|
||||||
struct acpi_button *button = NULL;
|
struct acpi_button *button = NULL;
|
||||||
|
|
||||||
static struct acpi_device *power_button;
|
|
||||||
static struct acpi_device *sleep_button;
|
|
||||||
static struct acpi_device *lid_button;
|
|
||||||
|
|
||||||
ACPI_FUNCTION_TRACE("acpi_button_add");
|
ACPI_FUNCTION_TRACE("acpi_button_add");
|
||||||
|
|
||||||
if (!device)
|
if (!device)
|
||||||
|
|
|
@ -8,6 +8,9 @@
|
||||||
#include <acpi_bus.h>
|
#include <acpi_bus.h>
|
||||||
#include <acpi_drivers.h>
|
#include <acpi_drivers.h>
|
||||||
|
|
||||||
|
#include <initguid.h>
|
||||||
|
#include <poclass.h>
|
||||||
|
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
|
||||||
|
@ -33,9 +36,13 @@ Bus_PDO_PnP (
|
||||||
{
|
{
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
POWER_STATE state;
|
POWER_STATE state;
|
||||||
|
struct acpi_device *device = NULL;
|
||||||
|
|
||||||
PAGED_CODE ();
|
PAGED_CODE ();
|
||||||
|
|
||||||
|
if (DeviceData->AcpiHandle)
|
||||||
|
acpi_bus_get_device(DeviceData->AcpiHandle, &device);
|
||||||
|
|
||||||
//
|
//
|
||||||
// NB: Because we are a bus enumerator, we have no one to whom we could
|
// NB: Because we are a bus enumerator, we have no one to whom we could
|
||||||
// defer these irps. Therefore we do not pass them down but merely
|
// defer these irps. Therefore we do not pass them down but merely
|
||||||
|
@ -45,7 +52,6 @@ Bus_PDO_PnP (
|
||||||
switch (IrpStack->MinorFunction) {
|
switch (IrpStack->MinorFunction) {
|
||||||
|
|
||||||
case IRP_MN_START_DEVICE:
|
case IRP_MN_START_DEVICE:
|
||||||
|
|
||||||
//
|
//
|
||||||
// Here we do what ever initialization and ``turning on'' that is
|
// Here we do what ever initialization and ``turning on'' that is
|
||||||
// required to allow others to access this device.
|
// required to allow others to access this device.
|
||||||
|
@ -59,6 +65,43 @@ Bus_PDO_PnP (
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DeviceData->InterfaceName.Length = 0;
|
||||||
|
|
||||||
|
if (!device)
|
||||||
|
{
|
||||||
|
IoRegisterDeviceInterface(DeviceData->Common.Self,
|
||||||
|
&GUID_DEVICE_SYS_BUTTON,
|
||||||
|
NULL,
|
||||||
|
&DeviceData->InterfaceName);
|
||||||
|
}
|
||||||
|
else if (device->flags.hardware_id &&
|
||||||
|
strstr(device->pnp.hardware_id, ACPI_THERMAL_HID))
|
||||||
|
{
|
||||||
|
IoRegisterDeviceInterface(DeviceData->Common.Self,
|
||||||
|
&GUID_DEVICE_THERMAL_ZONE,
|
||||||
|
NULL,
|
||||||
|
&DeviceData->InterfaceName);
|
||||||
|
}
|
||||||
|
else if (device->flags.hardware_id &&
|
||||||
|
strstr(device->pnp.hardware_id, ACPI_BUTTON_HID_LID))
|
||||||
|
{
|
||||||
|
IoRegisterDeviceInterface(DeviceData->Common.Self,
|
||||||
|
&GUID_DEVICE_LID,
|
||||||
|
NULL,
|
||||||
|
&DeviceData->InterfaceName);
|
||||||
|
}
|
||||||
|
else if (device->flags.hardware_id &&
|
||||||
|
strstr(device->pnp.hardware_id, ACPI_PROCESSOR_HID))
|
||||||
|
{
|
||||||
|
IoRegisterDeviceInterface(DeviceData->Common.Self,
|
||||||
|
&GUID_DEVICE_PROCESSOR,
|
||||||
|
NULL,
|
||||||
|
&DeviceData->InterfaceName);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DeviceData->InterfaceName.Length != 0)
|
||||||
|
IoSetDeviceInterfaceState(&DeviceData->InterfaceName, TRUE);
|
||||||
|
|
||||||
state.DeviceState = PowerDeviceD0;
|
state.DeviceState = PowerDeviceD0;
|
||||||
PoSetPowerState(DeviceData->Common.Self, DevicePowerState, state);
|
PoSetPowerState(DeviceData->Common.Self, DevicePowerState, state);
|
||||||
DeviceData->Common.DevicePowerState = PowerDeviceD0;
|
DeviceData->Common.DevicePowerState = PowerDeviceD0;
|
||||||
|
@ -68,6 +111,9 @@ Bus_PDO_PnP (
|
||||||
|
|
||||||
case IRP_MN_STOP_DEVICE:
|
case IRP_MN_STOP_DEVICE:
|
||||||
|
|
||||||
|
if (DeviceData->InterfaceName.Length != 0)
|
||||||
|
IoSetDeviceInterfaceState(&DeviceData->InterfaceName, FALSE);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Here we shut down the device and give up and unmap any resources
|
// Here we shut down the device and give up and unmap any resources
|
||||||
// we acquired for the device.
|
// we acquired for the device.
|
||||||
|
@ -331,20 +377,17 @@ Bus_PDO_QueryDeviceCaps(
|
||||||
deviceCapabilities->UniqueID = device->flags.unique_id;
|
deviceCapabilities->UniqueID = device->flags.unique_id;
|
||||||
deviceCapabilities->NoDisplayInUI = !device->status.show_in_ui;
|
deviceCapabilities->NoDisplayInUI = !device->status.show_in_ui;
|
||||||
deviceCapabilities->Address = device->pnp.bus_address;
|
deviceCapabilities->Address = device->pnp.bus_address;
|
||||||
deviceCapabilities->RawDeviceOK = FALSE;
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
deviceCapabilities->EjectSupported = FALSE;
|
|
||||||
deviceCapabilities->HardwareDisabled = FALSE;
|
|
||||||
deviceCapabilities->Removable = FALSE;
|
|
||||||
deviceCapabilities->SurpriseRemovalOK = FALSE;
|
|
||||||
deviceCapabilities->UniqueID = FALSE;
|
|
||||||
deviceCapabilities->NoDisplayInUI = FALSE;
|
|
||||||
deviceCapabilities->Address = 0;
|
|
||||||
|
|
||||||
/* The ACPI driver will run fixed buttons */
|
if (!device ||
|
||||||
deviceCapabilities->RawDeviceOK = TRUE;
|
(device->flags.hardware_id &&
|
||||||
|
(strstr(device->pnp.hardware_id, ACPI_BUTTON_HID_LID) ||
|
||||||
|
strstr(device->pnp.hardware_id, ACPI_THERMAL_HID) ||
|
||||||
|
strstr(device->pnp.hardware_id, ACPI_PROCESSOR_HID))))
|
||||||
|
{
|
||||||
|
/* Allow ACPI to control the device if it is a lid button,
|
||||||
|
* a thermal zone, a processor, or a fixed feature button */
|
||||||
|
deviceCapabilities->RawDeviceOK = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
deviceCapabilities->SilentInstall = FALSE;
|
deviceCapabilities->SilentInstall = FALSE;
|
||||||
|
|
|
@ -11,4 +11,5 @@
|
||||||
<file>cmbpnp.c</file>
|
<file>cmbpnp.c</file>
|
||||||
<file>cmbwmi.c</file>
|
<file>cmbwmi.c</file>
|
||||||
<file>cmbatt.rc</file>
|
<file>cmbatt.rc</file>
|
||||||
|
<pch>cmbatt.h</pch>
|
||||||
</module>
|
</module>
|
||||||
|
|
|
@ -78,60 +78,6 @@ GetStringElement(IN PACPI_METHOD_ARGUMENT Argument,
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
CmBattGetPsrData(PDEVICE_OBJECT DeviceObject,
|
|
||||||
PULONG PsrData)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
CmBattGetBifData(PCMBATT_DEVICE_EXTENSION DeviceExtension,
|
|
||||||
PACPI_BIF_DATA BifData)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
CmBattGetBstData(PCMBATT_DEVICE_EXTENSION DeviceExtension,
|
|
||||||
PACPI_BST_DATA BstData)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
CmBattGetStaData(PDEVICE_OBJECT DeviceObject,
|
|
||||||
PULONG StaData)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
CmBattGetUniqueId(PDEVICE_OBJECT DeviceObject,
|
|
||||||
PULONG UniqueId)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
CmBattSetTripPpoint(PCMBATT_DEVICE_EXTENSION DeviceExtension,
|
|
||||||
ULONG AlarmValue)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
CmBattSendDownStreamIrp(IN PDEVICE_OBJECT DeviceObject,
|
CmBattSendDownStreamIrp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
@ -166,8 +112,253 @@ CmBattSendDownStreamIrp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
if (CmBattDebug & 0x4C)
|
if (CmBattDebug & 0x4C)
|
||||||
DbgPrint("CmBattSendDownStreamIrp: Failed to allocate Irp\n");
|
DbgPrint("CmBattSendDownStreamIrp: Failed to allocate Irp\n");
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Call ACPI */
|
||||||
|
if (CmBattDebug & 0x40)
|
||||||
|
DbgPrint("CmBattSendDownStreamIrp: Irp %x [Tid] %x\n",
|
||||||
|
Irp, KeGetCurrentThread());
|
||||||
|
Status = IoCallDriver(DeviceObject, Irp);
|
||||||
|
if (Status == STATUS_PENDING)
|
||||||
|
{
|
||||||
|
/* Wait for completion */
|
||||||
|
KeWaitForSingleObject(&Event,
|
||||||
|
Executive,
|
||||||
|
KernelMode,
|
||||||
|
FALSE,
|
||||||
|
NULL);
|
||||||
|
Status = Irp->IoStatus.Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Check if caller wanted output */
|
||||||
|
if (OutputBuffer)
|
||||||
|
{
|
||||||
|
/* Make sure it's valid ACPI output buffer */
|
||||||
|
if ((OutputBuffer->Signature != ACPI_EVAL_OUTPUT_BUFFER_SIGNATURE) ||
|
||||||
|
!(OutputBuffer->Count))
|
||||||
|
{
|
||||||
|
/* It isn't, so set failure code */
|
||||||
|
Status = STATUS_ACPI_INVALID_DATA;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return status */
|
||||||
|
if (CmBattDebug & 0x40)
|
||||||
|
DbgPrint("CmBattSendDownStreamIrp: Irp %x completed %x! [Tid] %x\n",
|
||||||
|
Irp, Status, KeGetCurrentThread());
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CmBattGetPsrData(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
OUT PULONG PsrData)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
ACPI_EVAL_OUTPUT_BUFFER OutputBuffer;
|
||||||
|
ACPI_EVAL_INPUT_BUFFER InputBuffer;
|
||||||
|
PAGED_CODE();
|
||||||
|
if (CmBattDebug & 0x40)
|
||||||
|
DbgPrint("CmBattGetPsrData: Entered with Pdo %x Tid %x\n",
|
||||||
|
DeviceObject, KeGetCurrentThread());
|
||||||
|
|
||||||
|
/* Initialize to zero */
|
||||||
|
ASSERT(PsrData != NULL);
|
||||||
|
*PsrData = 0;
|
||||||
|
|
||||||
|
/* Request the _PSR method */
|
||||||
|
*(PULONG)InputBuffer.MethodName = 'RSP_';
|
||||||
|
InputBuffer.Signature = ACPI_EVAL_INPUT_BUFFER_SIGNATURE;
|
||||||
|
|
||||||
|
/* Send it to ACPI */
|
||||||
|
Status = CmBattSendDownStreamIrp(DeviceObject,
|
||||||
|
IOCTL_ACPI_EVAL_METHOD,
|
||||||
|
&InputBuffer,
|
||||||
|
sizeof(InputBuffer),
|
||||||
|
&OutputBuffer,
|
||||||
|
sizeof(OutputBuffer));
|
||||||
|
if (NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
/* Read the result */
|
||||||
|
Status = GetDwordElement(OutputBuffer.Argument, PsrData);
|
||||||
|
if (CmBattDebug & 0x440)
|
||||||
|
DbgPrint("CmBattGetPsrData: _PSR method returned %x \n", *PsrData);
|
||||||
|
}
|
||||||
|
else if (CmBattDebug & 0x44C)
|
||||||
|
{
|
||||||
|
/* Failure */
|
||||||
|
DbgPrint("CmBattGetPsrData: Failed _PSR method - Status (0x%x)\n", Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return status */
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CmBattGetStaData(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
OUT PULONG StaData)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
ACPI_EVAL_OUTPUT_BUFFER OutputBuffer;
|
||||||
|
ACPI_EVAL_INPUT_BUFFER InputBuffer;
|
||||||
|
PAGED_CODE();
|
||||||
|
if (CmBattDebug & 0x40)
|
||||||
|
DbgPrint("CmBattGetStaData: Entered with Pdo %x Tid %x\n",
|
||||||
|
DeviceObject, KeGetCurrentThread());
|
||||||
|
|
||||||
|
/* Initialize to zero */
|
||||||
|
ASSERT(StaData != NULL);
|
||||||
|
*StaData = 0;
|
||||||
|
|
||||||
|
/* Request the _PSR method */
|
||||||
|
*(PULONG)InputBuffer.MethodName = 'ATS_';
|
||||||
|
InputBuffer.Signature = ACPI_EVAL_INPUT_BUFFER_SIGNATURE;
|
||||||
|
|
||||||
|
/* Send it to ACPI */
|
||||||
|
Status = CmBattSendDownStreamIrp(DeviceObject,
|
||||||
|
IOCTL_ACPI_EVAL_METHOD,
|
||||||
|
&InputBuffer,
|
||||||
|
sizeof(InputBuffer),
|
||||||
|
&OutputBuffer,
|
||||||
|
sizeof(OutputBuffer));
|
||||||
|
if (NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
/* Read the result */
|
||||||
|
Status = GetDwordElement(OutputBuffer.Argument, StaData);
|
||||||
|
if (CmBattDebug & 0x440)
|
||||||
|
DbgPrint("CmBattGetStaData: _STA method returned %x \n", *StaData);
|
||||||
|
}
|
||||||
|
else if (CmBattDebug & 0x44C)
|
||||||
|
{
|
||||||
|
/* Failure */
|
||||||
|
DbgPrint("CmBattGetStaData: Failed _STA method - Status (0x%x)\n", Status);
|
||||||
|
Status = STATUS_NO_SUCH_DEVICE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return status */
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CmBattGetUniqueId(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
OUT PULONG UniqueId)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
ACPI_EVAL_OUTPUT_BUFFER OutputBuffer;
|
||||||
|
ACPI_EVAL_INPUT_BUFFER InputBuffer;
|
||||||
|
PAGED_CODE();
|
||||||
|
if (CmBattDebug & 0x40)
|
||||||
|
DbgPrint("CmBattGetUniqueId: Entered with Pdo %x Tid %x\n",
|
||||||
|
DeviceObject, KeGetCurrentThread());
|
||||||
|
|
||||||
|
/* Initialize to zero */
|
||||||
|
ASSERT(UniqueId != NULL);
|
||||||
|
*UniqueId = 0;
|
||||||
|
|
||||||
|
/* Request the _PSR method */
|
||||||
|
*(PULONG)InputBuffer.MethodName = 'DIU_';
|
||||||
|
InputBuffer.Signature = ACPI_EVAL_INPUT_BUFFER_SIGNATURE;
|
||||||
|
|
||||||
|
/* Send it to ACPI */
|
||||||
|
Status = CmBattSendDownStreamIrp(DeviceObject,
|
||||||
|
IOCTL_ACPI_EVAL_METHOD,
|
||||||
|
&InputBuffer,
|
||||||
|
sizeof(InputBuffer),
|
||||||
|
&OutputBuffer,
|
||||||
|
sizeof(OutputBuffer));
|
||||||
|
if (NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
/* Read the result */
|
||||||
|
Status = GetDwordElement(OutputBuffer.Argument, UniqueId);
|
||||||
|
if (CmBattDebug & 0x440)
|
||||||
|
DbgPrint("CmBattGetUniqueId: _UID method returned %x \n", *UniqueId);
|
||||||
|
}
|
||||||
|
else if (CmBattDebug & 0x44C)
|
||||||
|
{
|
||||||
|
/* Failure */
|
||||||
|
DbgPrint("CmBattGetUniqueId: Failed _UID method - Status (0x%x)\n", Status);
|
||||||
|
Status = STATUS_NO_SUCH_DEVICE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return status */
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CmBattSetTripPpoint(IN PCMBATT_DEVICE_EXTENSION DeviceExtension,
|
||||||
|
IN ULONG AlarmValue)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER InputBuffer;
|
||||||
|
PAGED_CODE();
|
||||||
|
if (CmBattDebug & 0x440)
|
||||||
|
DbgPrint("CmBattSetTripPpoint: _BTP Alarm Value %x Device %x Tid %x\n",
|
||||||
|
AlarmValue, DeviceExtension->DeviceId, KeGetCurrentThread);
|
||||||
|
|
||||||
|
/* Request the _BTP method */
|
||||||
|
*(PULONG)InputBuffer.MethodName = 'PTB_';
|
||||||
|
InputBuffer.Signature = ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_SIGNATURE;
|
||||||
|
InputBuffer.IntegerArgument = AlarmValue;
|
||||||
|
|
||||||
|
/* Send it to ACPI */
|
||||||
|
Status = CmBattSendDownStreamIrp(DeviceExtension->AttachedDevice,
|
||||||
|
IOCTL_ACPI_EVAL_METHOD,
|
||||||
|
&InputBuffer,
|
||||||
|
sizeof(InputBuffer),
|
||||||
|
NULL,
|
||||||
|
0);
|
||||||
|
if (!(NT_SUCCESS(Status)) && (CmBattDebug & 0x440))
|
||||||
|
DbgPrint("CmBattSetTripPpoint: Failed _BTP method on device %x - Status (0x%x)\n",
|
||||||
|
DeviceExtension->DeviceId, Status);
|
||||||
|
|
||||||
|
/* Return status */
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CmBattGetBifData(PCMBATT_DEVICE_EXTENSION DeviceExtension,
|
||||||
|
PACPI_BIF_DATA BifData)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CmBattGetBstData(PCMBATT_DEVICE_EXTENSION DeviceExtension,
|
||||||
|
PACPI_BST_DATA BstData)
|
||||||
|
{
|
||||||
|
PIRP Irp;
|
||||||
|
NTSTATUS Status;
|
||||||
|
KEVENT Event;
|
||||||
|
IO_STATUS_BLOCK IoStatusBlock;
|
||||||
|
PAGED_CODE();
|
||||||
|
|
||||||
|
/* Initialize our wait event */
|
||||||
|
KeInitializeEvent(&Event, SynchronizationEvent, 0);
|
||||||
|
|
||||||
|
/* Allocate the IRP */
|
||||||
|
Irp = IoBuildDeviceIoControlRequest(IoControlCode,
|
||||||
|
DeviceObject,
|
||||||
|
InputBuffer,
|
||||||
|
InputBufferLength,
|
||||||
|
OutputBuffer,
|
||||||
|
OutputBufferLength,
|
||||||
|
0,
|
||||||
|
&Event,
|
||||||
|
&IoStatusBlock);
|
||||||
|
if (!Irp)
|
||||||
|
{
|
||||||
|
/* No IRP, fail */
|
||||||
|
if (CmBattDebug & 0x4C)
|
||||||
|
DbgPrint("CmBattSendDownStreamIrp: Failed to allocate Irp\n");
|
||||||
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
}
|
||||||
|
|
||||||
/* Call ACPI */
|
/* Call ACPI */
|
||||||
if (CmBattDebug & 0x40)
|
if (CmBattDebug & 0x40)
|
||||||
DbgPrint("CmBattSendDownStreamIrp: Irp %x [Tid] %x\n", Irp, KeGetCurrentThread());
|
DbgPrint("CmBattSendDownStreamIrp: Irp %x [Tid] %x\n", Irp, KeGetCurrentThread());
|
||||||
|
|
168
reactos/drivers/bus/acpi/compbatt/compbatt.c
Normal file
168
reactos/drivers/bus/acpi/compbatt/compbatt.c
Normal file
|
@ -0,0 +1,168 @@
|
||||||
|
/*
|
||||||
|
* PROJECT: ReactOS Composite Battery Driver
|
||||||
|
* LICENSE: BSD - See COPYING.ARM in the top level directory
|
||||||
|
* FILE: boot/drivers/bus/acpi/compbatt/compbatt.c
|
||||||
|
* PURPOSE: Main Initialization Code and IRP Handling
|
||||||
|
* PROGRAMMERS: ReactOS Portable Systems Group
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* INCLUDES *******************************************************************/
|
||||||
|
|
||||||
|
#include "compbatt.h"
|
||||||
|
|
||||||
|
/* GLOBALS ********************************************************************/
|
||||||
|
|
||||||
|
ULONG CompBattDebug;
|
||||||
|
|
||||||
|
/* FUNCTIONS ******************************************************************/
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattOpenClose(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
IN PIRP Irp)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattSystemControl(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
IN PIRP Irp)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattMonitorIrpComplete(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
IN PIRP Irp,
|
||||||
|
IN PKEVENT Event)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattMonitorIrpCompleteWorker(IN PCOMPBATT_BATTERY_ENTRY BatteryData)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattRecalculateTag(IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattIoctl(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
IN PIRP Irp)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattQueryTag(IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension,
|
||||||
|
OUT PULONG Tag)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattDisableStatusNotify(IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattSetStatusNotify(IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension,
|
||||||
|
IN ULONG BatteryTag,
|
||||||
|
IN PBATTERY_NOTIFY BatteryNotify)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattGetBatteryStatus(IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension,
|
||||||
|
IN ULONG Tag)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattQueryStatus(IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension,
|
||||||
|
IN ULONG Tag,
|
||||||
|
IN PBATTERY_STATUS BatteryStatus)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattGetBatteryInformation(OUT PBATTERY_INFORMATION BatteryInformation,
|
||||||
|
IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattGetBatteryGranularity(OUT PBATTERY_REPORTING_SCALE ReportingScale,
|
||||||
|
IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattGetEstimatedTime(OUT PULONG Time,
|
||||||
|
IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattQueryInformation(IN PCOMPBATT_DEVICE_EXTENSION FdoExtension,
|
||||||
|
IN ULONG Tag,
|
||||||
|
IN BATTERY_QUERY_INFORMATION_LEVEL InfoLevel,
|
||||||
|
IN OPTIONAL LONG AtRate,
|
||||||
|
IN PVOID Buffer,
|
||||||
|
IN ULONG BufferLength,
|
||||||
|
OUT PULONG ReturnedLength)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
DriverEntry(IN PDRIVER_OBJECT DriverObject,
|
||||||
|
IN PUNICODE_STRING RegistryPath)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* EOF */
|
57
reactos/drivers/bus/acpi/compbatt/compbatt.h
Normal file
57
reactos/drivers/bus/acpi/compbatt/compbatt.h
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
/*
|
||||||
|
* PROJECT: ReactOS Composite Battery Driver
|
||||||
|
* LICENSE: BSD - See COPYING.ARM in the top level directory
|
||||||
|
* FILE: boot/drivers/bus/acpi/compbatt/compbatt.h
|
||||||
|
* PURPOSE: Main Header File
|
||||||
|
* PROGRAMMERS: ReactOS Portable Systems Group
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ntddk.h>
|
||||||
|
#include <initguid.h>
|
||||||
|
#include <batclass.h>
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
typedef struct _COMPBATT_BATTERY_ENTRY
|
||||||
|
{
|
||||||
|
LIST_ENTRY BatteryLink;
|
||||||
|
IO_REMOVE_LOCK RemoveLock;
|
||||||
|
PDEVICE_OBJECT DeviceObject;
|
||||||
|
PIRP Irp;
|
||||||
|
WORK_QUEUE_ITEM WorkItem;
|
||||||
|
BOOLEAN WaitFlag;
|
||||||
|
BATTERY_WAIT_STATUS WaitStatus;
|
||||||
|
union
|
||||||
|
{
|
||||||
|
BATTERY_WAIT_STATUS WorkerWaitStatus;
|
||||||
|
BATTERY_STATUS WorkerStatus;
|
||||||
|
};
|
||||||
|
ULONG Tag;
|
||||||
|
ULONG Flags;
|
||||||
|
BATTERY_INFORMATION BatteryInformation;
|
||||||
|
BATTERY_STATUS BatteryStatus;
|
||||||
|
ULONGLONG InterruptTime;
|
||||||
|
UNICODE_STRING BatteryName;
|
||||||
|
} COMPBATT_BATTERY_ENTRY, *PCOMPBATT_BATTERY_ENTRY;
|
||||||
|
|
||||||
|
typedef struct _COMPBATT_DEVICE_EXTENSION
|
||||||
|
{
|
||||||
|
PVOID ClassData;
|
||||||
|
ULONG NextTag;
|
||||||
|
LIST_ENTRY BatteryList;
|
||||||
|
FAST_MUTEX Lock;
|
||||||
|
ULONG Tag;
|
||||||
|
ULONG Flags;
|
||||||
|
BATTERY_INFORMATION BatteryInformation;
|
||||||
|
BATTERY_STATUS BatteryStatus;
|
||||||
|
ULONGLONG InterruptTime;
|
||||||
|
POWER_STATE PowerState;
|
||||||
|
ULONG LowCapacity;
|
||||||
|
ULONG HighCapacity;
|
||||||
|
PDEVICE_OBJECT AttachedDevice;
|
||||||
|
PDEVICE_OBJECT DeviceObject;
|
||||||
|
PVOID NotificationEntry;
|
||||||
|
} COMPBATT_DEVICE_EXTENSION, *PCOMPBATT_DEVICE_EXTENSION;
|
||||||
|
|
||||||
|
extern ULONG CmBattDebug;
|
||||||
|
|
||||||
|
/* EOF */
|
13
reactos/drivers/bus/acpi/compbatt/compbatt.rbuild
Normal file
13
reactos/drivers/bus/acpi/compbatt/compbatt.rbuild
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
|
||||||
|
<module name="compbatt" type="kernelmodedriver" installbase="system32/drivers" installname="compbatt.sys">
|
||||||
|
<library>ntoskrnl</library>
|
||||||
|
<library>hal</library>
|
||||||
|
<library>battc</library>
|
||||||
|
<include base="compbatt">.</include>
|
||||||
|
<file>compbatt.c</file>
|
||||||
|
<file>compmisc.c</file>
|
||||||
|
<file>comppnp.c</file>
|
||||||
|
<file>compbatt.rc</file>
|
||||||
|
<pch>compbatt.h</pch>
|
||||||
|
</module>
|
5
reactos/drivers/bus/acpi/compbatt/compbatt.rc
Normal file
5
reactos/drivers/bus/acpi/compbatt/compbatt.rc
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#define REACTOS_VERSION_DLL
|
||||||
|
#define REACTOS_STR_FILE_DESCRIPTION "Composite Battery Driver\0"
|
||||||
|
#define REACTOS_STR_INTERNAL_NAME "compbatt\0"
|
||||||
|
#define REACTOS_STR_ORIGINAL_FILENAME "compbatt.sys\0"
|
||||||
|
#include <reactos/version.rc>
|
40
reactos/drivers/bus/acpi/compbatt/compmisc.c
Normal file
40
reactos/drivers/bus/acpi/compbatt/compmisc.c
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
/*
|
||||||
|
* PROJECT: ReactOS Composite Battery Driver
|
||||||
|
* LICENSE: BSD - See COPYING.ARM in the top level directory
|
||||||
|
* FILE: boot/drivers/bus/acpi/compbatt/compmisc.c
|
||||||
|
* PURPOSE: Miscellaneous Support Routines
|
||||||
|
* PROGRAMMERS: ReactOS Portable Systems Group
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* INCLUDES *******************************************************************/
|
||||||
|
|
||||||
|
#include "compbatt.h"
|
||||||
|
|
||||||
|
/* FUNCTIONS ******************************************************************/
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
BatteryIoctl(IN ULONG IoControlCode,
|
||||||
|
IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
IN PVOID InputBuffer,
|
||||||
|
IN ULONG InputBufferLength,
|
||||||
|
IN PVOID OutputBuffer,
|
||||||
|
IN ULONG OutputBufferLength,
|
||||||
|
IN BOOLEAN InternalDeviceIoControl)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattGetDeviceObjectPointer(IN PCUNICODE_STRING DeviceName,
|
||||||
|
IN ACCESS_MASK DesiredAccess,
|
||||||
|
OUT PFILE_OBJECT *FileObject,
|
||||||
|
OUT PDEVICE_OBJECT *DeviceObject)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* EOF */
|
95
reactos/drivers/bus/acpi/compbatt/comppnp.c
Normal file
95
reactos/drivers/bus/acpi/compbatt/comppnp.c
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
/*
|
||||||
|
* PROJECT: ReactOS Composite Battery Driver
|
||||||
|
* LICENSE: BSD - See COPYING.ARM in the top level directory
|
||||||
|
* FILE: boot/drivers/bus/acpi/compbatt/comppnp.c
|
||||||
|
* PURPOSE: Plug-and-Play IOCTL/IRP Handling
|
||||||
|
* PROGRAMMERS: ReactOS Portable Systems Group
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* INCLUDES *******************************************************************/
|
||||||
|
|
||||||
|
#include "compbatt.h"
|
||||||
|
|
||||||
|
/* FUNCTIONS ******************************************************************/
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattPowerDispatch(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
IN PIRP Irp)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
PCOMPBATT_BATTERY_ENTRY
|
||||||
|
NTAPI
|
||||||
|
RemoveBatteryFromList(IN PCUNICODE_STRING BatteryName,
|
||||||
|
IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOLEAN
|
||||||
|
NTAPI
|
||||||
|
IsBatteryAlreadyOnList(IN PCUNICODE_STRING BatteryName,
|
||||||
|
IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattAddNewBattery(IN PCUNICODE_STRING BatteryName,
|
||||||
|
IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattRemoveBattery(IN PCUNICODE_STRING BatteryName,
|
||||||
|
IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattGetBatteries(IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattPnpEventHandler(IN PDEVICE_INTERFACE_CHANGE_NOTIFICATION Notification,
|
||||||
|
IN PCOMPBATT_DEVICE_EXTENSION DeviceExtension)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattAddDevice(IN PDRIVER_OBJECT DriverObject,
|
||||||
|
IN PDEVICE_OBJECT PdoDeviceObject)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CompBattPnpDispatch(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
IN PIRP Irp)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* EOF */
|
180
reactos/drivers/bus/acpi/eval.c
Normal file
180
reactos/drivers/bus/acpi/eval.c
Normal file
|
@ -0,0 +1,180 @@
|
||||||
|
#include <ntddk.h>
|
||||||
|
|
||||||
|
#include <acpi.h>
|
||||||
|
|
||||||
|
#include <acpisys.h>
|
||||||
|
#include <acpi_bus.h>
|
||||||
|
#include <acpi_drivers.h>
|
||||||
|
#include <acpiioct.h>
|
||||||
|
|
||||||
|
#include <glue.h>
|
||||||
|
#include <accommon.h>
|
||||||
|
#include <acobject.h>
|
||||||
|
#include <actypes.h>
|
||||||
|
|
||||||
|
#include <wdmguid.h>
|
||||||
|
#define NDEBUG
|
||||||
|
#include <debug.h>
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
Bus_PDO_EvalMethod(PPDO_DEVICE_DATA DeviceData,
|
||||||
|
PIRP Irp)
|
||||||
|
{
|
||||||
|
ULONG Signature;
|
||||||
|
NTSTATUS Status;
|
||||||
|
ACPI_OBJECT_LIST ParamList;
|
||||||
|
PACPI_EVAL_INPUT_BUFFER EvalInputBuff = Irp->AssociatedIrp.SystemBuffer;
|
||||||
|
ACPI_BUFFER RetBuff = {ACPI_ALLOCATE_BUFFER, NULL};
|
||||||
|
PACPI_EVAL_OUTPUT_BUFFER OutputBuf;
|
||||||
|
PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp);
|
||||||
|
ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER *SimpleInt;
|
||||||
|
ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING *SimpleStr;
|
||||||
|
|
||||||
|
if (IrpSp->Parameters.DeviceIoControl.InputBufferLength < sizeof(ULONG))
|
||||||
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
Signature = *((PULONG)Irp->AssociatedIrp.SystemBuffer);
|
||||||
|
|
||||||
|
switch (Signature)
|
||||||
|
{
|
||||||
|
case ACPI_EVAL_INPUT_BUFFER_SIGNATURE:
|
||||||
|
if (IrpSp->Parameters.DeviceIoControl.InputBufferLength < sizeof(ACPI_EVAL_INPUT_BUFFER))
|
||||||
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
ParamList.Count = 0;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER_SIGNATURE:
|
||||||
|
SimpleInt = Irp->AssociatedIrp.SystemBuffer;
|
||||||
|
|
||||||
|
if (IrpSp->Parameters.DeviceIoControl.InputBufferLength < sizeof(ACPI_EVAL_INPUT_BUFFER_SIMPLE_INTEGER))
|
||||||
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
ParamList.Count = 1;
|
||||||
|
|
||||||
|
ParamList.Pointer = ExAllocatePool(NonPagedPool, sizeof(ACPI_OBJECT));
|
||||||
|
if (!ParamList.Pointer) return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
|
||||||
|
ParamList.Pointer[0].Type = ACPI_TYPE_INTEGER;
|
||||||
|
ParamList.Pointer[0].Integer.Value = SimpleInt->IntegerArgument;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING_SIGNATURE:
|
||||||
|
SimpleStr = Irp->AssociatedIrp.SystemBuffer;
|
||||||
|
|
||||||
|
if (IrpSp->Parameters.DeviceIoControl.InputBufferLength < sizeof(ACPI_EVAL_INPUT_BUFFER_SIMPLE_STRING))
|
||||||
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
ParamList.Count = 1;
|
||||||
|
|
||||||
|
ParamList.Pointer = ExAllocatePool(NonPagedPool, sizeof(ACPI_OBJECT));
|
||||||
|
if (!ParamList.Pointer) return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
|
||||||
|
ParamList.Pointer[0].String.Pointer = (CHAR*)SimpleStr->String;
|
||||||
|
ParamList.Pointer[0].String.Length = SimpleStr->StringLength;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
DPRINT1("Unsupported input buffer signature: %d\n", Signature);
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = AcpiEvaluateObject(DeviceData->AcpiHandle,
|
||||||
|
(CHAR*)EvalInputBuff->MethodName,
|
||||||
|
&ParamList,
|
||||||
|
&RetBuff);
|
||||||
|
|
||||||
|
if (ParamList.Count != 0)
|
||||||
|
ExFreePool(ParamList.Pointer);
|
||||||
|
|
||||||
|
if (ACPI_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
ACPI_OBJECT *Obj = RetBuff.Pointer;
|
||||||
|
ULONG ExtraParamLength;
|
||||||
|
|
||||||
|
/* If we didn't get anything back then we're done */
|
||||||
|
if (!RetBuff.Pointer || RetBuff.Length == 0)
|
||||||
|
return STATUS_SUCCESS;
|
||||||
|
|
||||||
|
switch (Obj->Type)
|
||||||
|
{
|
||||||
|
case ACPI_TYPE_INTEGER:
|
||||||
|
ExtraParamLength = sizeof(ULONG);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ACPI_TYPE_STRING:
|
||||||
|
ExtraParamLength = Obj->String.Length;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ACPI_TYPE_BUFFER:
|
||||||
|
ExtraParamLength = Obj->Buffer.Length;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ACPI_TYPE_PACKAGE:
|
||||||
|
DPRINT1("ACPI_TYPE_PACKAGE not supported yet!\n");
|
||||||
|
return STATUS_UNSUCCESSFUL;
|
||||||
|
|
||||||
|
default:
|
||||||
|
ASSERT(FALSE);
|
||||||
|
return STATUS_UNSUCCESSFUL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enough space for a ULONG is always included */
|
||||||
|
if (ExtraParamLength >= sizeof(ULONG))
|
||||||
|
ExtraParamLength -= sizeof(ULONG);
|
||||||
|
else
|
||||||
|
ExtraParamLength = 0;
|
||||||
|
|
||||||
|
OutputBuf = ExAllocatePool(NonPagedPool, sizeof(ACPI_EVAL_OUTPUT_BUFFER) +
|
||||||
|
ExtraParamLength);
|
||||||
|
if (!OutputBuf) return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
|
||||||
|
OutputBuf->Signature = ACPI_EVAL_OUTPUT_BUFFER_SIGNATURE;
|
||||||
|
OutputBuf->Length = ExtraParamLength + sizeof(ACPI_METHOD_ARGUMENT);
|
||||||
|
OutputBuf->Count = 1;
|
||||||
|
|
||||||
|
switch (Obj->Type)
|
||||||
|
{
|
||||||
|
case ACPI_TYPE_INTEGER:
|
||||||
|
ACPI_METHOD_SET_ARGUMENT_INTEGER(OutputBuf->Argument, Obj->Integer.Value);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ACPI_TYPE_STRING:
|
||||||
|
ACPI_METHOD_SET_ARGUMENT_STRING(OutputBuf->Argument, Obj->String.Pointer);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ACPI_TYPE_BUFFER:
|
||||||
|
ACPI_METHOD_SET_ARGUMENT_BUFFER(OutputBuf->Argument, Obj->Buffer.Pointer, Obj->Buffer.Length);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ACPI_TYPE_PACKAGE:
|
||||||
|
DPRINT1("ACPI_TYPE_PACKAGE not supported yet!\n");
|
||||||
|
return STATUS_UNSUCCESSFUL;
|
||||||
|
|
||||||
|
default:
|
||||||
|
ASSERT(FALSE);
|
||||||
|
return STATUS_UNSUCCESSFUL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IrpSp->Parameters.DeviceIoControl.OutputBufferLength >= sizeof(ACPI_EVAL_OUTPUT_BUFFER) +
|
||||||
|
ExtraParamLength)
|
||||||
|
{
|
||||||
|
RtlCopyMemory(Irp->AssociatedIrp.SystemBuffer, OutputBuf, sizeof(ACPI_EVAL_OUTPUT_BUFFER) +
|
||||||
|
ExtraParamLength);
|
||||||
|
Irp->IoStatus.Information = sizeof(ACPI_EVAL_OUTPUT_BUFFER) + ExtraParamLength;
|
||||||
|
ExFreePool(OutputBuf);
|
||||||
|
return STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ExFreePool(OutputBuf);
|
||||||
|
return STATUS_BUFFER_TOO_SMALL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DPRINT1("Query method %s failed on %p\n", EvalInputBuff->MethodName, DeviceData->AcpiHandle);
|
||||||
|
return STATUS_UNSUCCESSFUL;
|
||||||
|
}
|
||||||
|
}
|
|
@ -73,6 +73,8 @@ enum acpi_bus_device_type {
|
||||||
ACPI_BUS_TYPE_SYSTEM,
|
ACPI_BUS_TYPE_SYSTEM,
|
||||||
ACPI_BUS_TYPE_POWER_BUTTON,
|
ACPI_BUS_TYPE_POWER_BUTTON,
|
||||||
ACPI_BUS_TYPE_SLEEP_BUTTON,
|
ACPI_BUS_TYPE_SLEEP_BUTTON,
|
||||||
|
ACPI_BUS_TYPE_POWER_BUTTONF,
|
||||||
|
ACPI_BUS_TYPE_SLEEP_BUTTONF,
|
||||||
ACPI_BUS_DEVICE_TYPE_COUNT
|
ACPI_BUS_DEVICE_TYPE_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,7 @@ typedef struct _PDO_DEVICE_DATA
|
||||||
// Link point to hold all the PDOs for a single bus together
|
// Link point to hold all the PDOs for a single bus together
|
||||||
LIST_ENTRY Link;
|
LIST_ENTRY Link;
|
||||||
ULONG InterfaceRefCount;
|
ULONG InterfaceRefCount;
|
||||||
|
UNICODE_STRING InterfaceName;
|
||||||
|
|
||||||
} PDO_DEVICE_DATA, *PPDO_DEVICE_DATA;
|
} PDO_DEVICE_DATA, *PPDO_DEVICE_DATA;
|
||||||
|
|
||||||
|
@ -64,10 +65,6 @@ typedef struct _FDO_DEVICE_DATA
|
||||||
// A synchronization for access to the device extension.
|
// A synchronization for access to the device extension.
|
||||||
FAST_MUTEX Mutex;
|
FAST_MUTEX Mutex;
|
||||||
|
|
||||||
// The name returned from IoRegisterDeviceInterface,
|
|
||||||
// which is used as a handle for IoSetDeviceInterfaceState.
|
|
||||||
UNICODE_STRING InterfaceName;
|
|
||||||
|
|
||||||
} FDO_DEVICE_DATA, *PFDO_DEVICE_DATA;
|
} FDO_DEVICE_DATA, *PFDO_DEVICE_DATA;
|
||||||
|
|
||||||
#define FDO_FROM_PDO(pdoData) \
|
#define FDO_FROM_PDO(pdoData) \
|
||||||
|
@ -90,6 +87,11 @@ NTSTATUS
|
||||||
ACPIEnumerateDevices(
|
ACPIEnumerateDevices(
|
||||||
PFDO_DEVICE_DATA DeviceExtension);
|
PFDO_DEVICE_DATA DeviceExtension);
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
Bus_PDO_EvalMethod(PPDO_DEVICE_DATA DeviceData,
|
||||||
|
PIRP Irp);
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
Bus_CreateClose (
|
Bus_CreateClose (
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
#include <acpi_bus.h>
|
#include <acpi_bus.h>
|
||||||
#include <acpi_drivers.h>
|
#include <acpi_drivers.h>
|
||||||
|
|
||||||
|
#include <acpiioct.h>
|
||||||
|
#include <poclass.h>
|
||||||
|
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
|
||||||
|
@ -15,7 +18,8 @@
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern struct acpi_device *sleep_button;
|
||||||
|
extern struct acpi_device *power_button;
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
|
@ -29,7 +33,9 @@ Bus_AddDevice(
|
||||||
PDEVICE_OBJECT deviceObject = NULL;
|
PDEVICE_OBJECT deviceObject = NULL;
|
||||||
PFDO_DEVICE_DATA deviceData = NULL;
|
PFDO_DEVICE_DATA deviceData = NULL;
|
||||||
PWCHAR deviceName = NULL;
|
PWCHAR deviceName = NULL;
|
||||||
|
#ifndef NDEBUG
|
||||||
ULONG nameLength;
|
ULONG nameLength;
|
||||||
|
#endif
|
||||||
|
|
||||||
PAGED_CODE ();
|
PAGED_CODE ();
|
||||||
|
|
||||||
|
@ -162,38 +168,161 @@ End:
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
ACPIDispatchCreateClose(
|
||||||
|
IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
IN PIRP Irp)
|
||||||
|
{
|
||||||
|
Irp->IoStatus.Status = STATUS_SUCCESS;
|
||||||
|
Irp->IoStatus.Information = 0;
|
||||||
|
|
||||||
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
|
|
||||||
|
return STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
ButtonWaitThread(PVOID Context)
|
||||||
|
{
|
||||||
|
PIRP Irp = Context;
|
||||||
|
int result;
|
||||||
|
struct acpi_bus_event event;
|
||||||
|
ULONG ButtonEvent;
|
||||||
|
|
||||||
|
while (ACPI_SUCCESS(result = acpi_bus_receive_event(&event)) &&
|
||||||
|
event.type != ACPI_BUTTON_NOTIFY_STATUS);
|
||||||
|
|
||||||
|
if (!ACPI_SUCCESS(result))
|
||||||
|
{
|
||||||
|
Irp->IoStatus.Status = STATUS_UNSUCCESSFUL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (strstr(event.bus_id, "PWRF"))
|
||||||
|
ButtonEvent = SYS_BUTTON_POWER;
|
||||||
|
else if (strstr(event.bus_id, "SLPF"))
|
||||||
|
ButtonEvent = SYS_BUTTON_SLEEP;
|
||||||
|
else
|
||||||
|
ButtonEvent = 0;
|
||||||
|
|
||||||
|
RtlCopyMemory(Irp->AssociatedIrp.SystemBuffer, &ButtonEvent, sizeof(ButtonEvent));
|
||||||
|
Irp->IoStatus.Status = STATUS_SUCCESS;
|
||||||
|
Irp->IoStatus.Information = sizeof(ULONG);
|
||||||
|
}
|
||||||
|
|
||||||
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
ACPIDispatchDeviceControl(
|
ACPIDispatchDeviceControl(
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
IN PDEVICE_OBJECT DeviceObject,
|
||||||
IN PIRP Irp)
|
IN PIRP Irp)
|
||||||
{
|
{
|
||||||
PIO_STACK_LOCATION IrpSp;
|
PIO_STACK_LOCATION irpStack;
|
||||||
NTSTATUS Status;
|
NTSTATUS status = STATUS_NOT_SUPPORTED;
|
||||||
|
PCOMMON_DEVICE_DATA commonData;
|
||||||
|
ULONG Caps = 0;
|
||||||
|
HANDLE ThreadHandle;
|
||||||
|
|
||||||
DPRINT("Called. IRP is at (0x%X)\n", Irp);
|
PAGED_CODE ();
|
||||||
|
|
||||||
|
irpStack = IoGetCurrentIrpStackLocation (Irp);
|
||||||
|
ASSERT (IRP_MJ_DEVICE_CONTROL == irpStack->MajorFunction);
|
||||||
|
|
||||||
|
commonData = (PCOMMON_DEVICE_DATA) DeviceObject->DeviceExtension;
|
||||||
|
|
||||||
Irp->IoStatus.Information = 0;
|
Irp->IoStatus.Information = 0;
|
||||||
|
|
||||||
IrpSp = IoGetCurrentIrpStackLocation(Irp);
|
if (!commonData->IsFDO)
|
||||||
switch (IrpSp->Parameters.DeviceIoControl.IoControlCode) {
|
{
|
||||||
default:
|
switch (irpStack->Parameters.DeviceIoControl.IoControlCode)
|
||||||
DPRINT("Unknown IOCTL 0x%X\n", IrpSp->Parameters.DeviceIoControl.IoControlCode);
|
{
|
||||||
Status = STATUS_NOT_IMPLEMENTED;
|
case IOCTL_ACPI_EVAL_METHOD:
|
||||||
break;
|
status = Bus_PDO_EvalMethod((PPDO_DEVICE_DATA)commonData,
|
||||||
}
|
Irp);
|
||||||
|
break;
|
||||||
|
|
||||||
if (Status != STATUS_PENDING) {
|
case IOCTL_GET_SYS_BUTTON_CAPS:
|
||||||
Irp->IoStatus.Status = Status;
|
if (irpStack->Parameters.DeviceIoControl.OutputBufferLength < sizeof(ULONG))
|
||||||
|
{
|
||||||
|
status = STATUS_BUFFER_TOO_SMALL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
DPRINT("Completing IRP at 0x%X\n", Irp);
|
if (wcsstr(((PPDO_DEVICE_DATA)commonData)->HardwareIDs, L"PNP0C0D"))
|
||||||
|
{
|
||||||
|
DPRINT1("Lid button reported to power manager\n");
|
||||||
|
Caps |= SYS_BUTTON_LID;
|
||||||
|
}
|
||||||
|
else if (((PPDO_DEVICE_DATA)commonData)->AcpiHandle == NULL)
|
||||||
|
{
|
||||||
|
/* We have to return both at the same time because since we
|
||||||
|
* have a NULL handle we are the fixed feature DO and we will
|
||||||
|
* only be called once (not once per device)
|
||||||
|
*/
|
||||||
|
if (power_button)
|
||||||
|
{
|
||||||
|
DPRINT1("Fixed power button reported to power manager\n");
|
||||||
|
Caps |= SYS_BUTTON_POWER;
|
||||||
|
}
|
||||||
|
if (sleep_button)
|
||||||
|
{
|
||||||
|
DPRINT1("Fixed sleep button reported to power manager\n");
|
||||||
|
Caps |= SYS_BUTTON_SLEEP;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (wcsstr(((PPDO_DEVICE_DATA)commonData)->HardwareIDs, L"PNP0C0C"))
|
||||||
|
{
|
||||||
|
DPRINT1("Control method power button reported to power manager\n");
|
||||||
|
Caps |= SYS_BUTTON_POWER;
|
||||||
|
}
|
||||||
|
else if (wcsstr(((PPDO_DEVICE_DATA)commonData)->HardwareIDs, L"PNP0C0E"))
|
||||||
|
{
|
||||||
|
DPRINT1("Control method sleep reported to power manager\n");
|
||||||
|
Caps |= SYS_BUTTON_SLEEP;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DPRINT1("IOCTL_GET_SYS_BUTTON_CAPS sent to a non-button device\n");
|
||||||
|
status = STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
if (Caps != 0)
|
||||||
}
|
{
|
||||||
|
RtlCopyMemory(Irp->AssociatedIrp.SystemBuffer, &Caps, sizeof(Caps));
|
||||||
|
Irp->IoStatus.Information = sizeof(Caps);
|
||||||
|
status = STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
DPRINT("Leaving. Status 0x%X\n", Status);
|
case IOCTL_GET_SYS_BUTTON_EVENT:
|
||||||
|
PsCreateSystemThread(&ThreadHandle, THREAD_ALL_ACCESS, 0, 0, 0, ButtonWaitThread, Irp);
|
||||||
|
ZwClose(ThreadHandle);
|
||||||
|
|
||||||
return Status;
|
status = STATUS_PENDING;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
DPRINT1("Unsupported IOCTL: %x\n", irpStack->Parameters.DeviceIoControl.IoControlCode);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
DPRINT1("IOCTL sent to the ACPI FDO! Kill the caller!\n");
|
||||||
|
|
||||||
|
if (status != STATUS_PENDING)
|
||||||
|
{
|
||||||
|
Irp->IoStatus.Status = status;
|
||||||
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
IoMarkIrpPending(Irp);
|
||||||
|
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
@ -211,6 +340,8 @@ DriverEntry (
|
||||||
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = ACPIDispatchDeviceControl;
|
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = ACPIDispatchDeviceControl;
|
||||||
DriverObject->MajorFunction [IRP_MJ_PNP] = Bus_PnP;
|
DriverObject->MajorFunction [IRP_MJ_PNP] = Bus_PnP;
|
||||||
DriverObject->MajorFunction [IRP_MJ_POWER] = Bus_Power;
|
DriverObject->MajorFunction [IRP_MJ_POWER] = Bus_Power;
|
||||||
|
DriverObject->MajorFunction [IRP_MJ_CREATE] = ACPIDispatchCreateClose;
|
||||||
|
DriverObject->MajorFunction [IRP_MJ_CLOSE] = ACPIDispatchCreateClose;
|
||||||
|
|
||||||
DriverObject->DriverExtension->AddDevice = Bus_AddDevice;
|
DriverObject->DriverExtension->AddDevice = Bus_AddDevice;
|
||||||
|
|
||||||
|
|
|
@ -576,7 +576,12 @@ AcpiOsWaitSemaphore(
|
||||||
DPRINT("Waiting for semaphore %p\n", Handle);
|
DPRINT("Waiting for semaphore %p\n", Handle);
|
||||||
ASSERT(Mutex);
|
ASSERT(Mutex);
|
||||||
|
|
||||||
ExAcquireFastMutex(Mutex);
|
/* HACK: We enter here at a high IRQL sometimes
|
||||||
|
* because we get called from DPCs and ISRs and
|
||||||
|
* we can't use a fast mutex at that IRQL */
|
||||||
|
if (KeGetCurrentIrql() <= APC_LEVEL)
|
||||||
|
ExAcquireFastMutex(Mutex);
|
||||||
|
|
||||||
return AE_OK;
|
return AE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -590,7 +595,12 @@ AcpiOsSignalSemaphore (
|
||||||
DPRINT("AcpiOsSignalSemaphore %p\n",Handle);
|
DPRINT("AcpiOsSignalSemaphore %p\n",Handle);
|
||||||
ASSERT(Mutex);
|
ASSERT(Mutex);
|
||||||
|
|
||||||
ExReleaseFastMutex(Mutex);
|
/* HACK: We enter here at a high IRQL sometimes
|
||||||
|
* because we get called from DPCs and ISRs and
|
||||||
|
* we can't use a fast mutex at that IRQL */
|
||||||
|
if (KeGetCurrentIrql() <= APC_LEVEL)
|
||||||
|
ExReleaseFastMutex(Mutex);
|
||||||
|
|
||||||
return AE_OK;
|
return AE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
|
|
||||||
/* DDK/NDK/SDK Headers */
|
/* DDK/NDK/SDK Headers */
|
||||||
#include <ddk/ntddk.h>
|
#include <ntddk.h>
|
||||||
#include <ddk/ntddmou.h>
|
#include <ntddmou.h>
|
||||||
#include <ddk/ntifs.h>
|
#include <ntifs.h>
|
||||||
#include <ddk/tvout.h>
|
#include <tvout.h>
|
||||||
#include <ndk/ntndk.h>
|
#include <ntndk.h>
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <windef.h>
|
#include <windef.h>
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
#include <dde.h>
|
#include <dde.h>
|
||||||
|
|
||||||
|
|
||||||
#include <ddk/ddkmapi.h>
|
#include <ddkmapi.h>
|
||||||
|
|
||||||
/* Prototypes */
|
/* Prototypes */
|
||||||
VOID DxGetVersionNumber(PVOID lpvInBuffer, LPDDGETVERSIONNUMBER lpvOutBuffer);
|
VOID DxGetVersionNumber(PVOID lpvInBuffer, LPDDGETVERSIONNUMBER lpvOutBuffer);
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
/* DDK/NDK/SDK Headers */
|
/* DDK/NDK/SDK Headers */
|
||||||
#include <ddk/ntddk.h>
|
#include <ntddk.h>
|
||||||
#include <ddk/ntddmou.h>
|
#include <ntddmou.h>
|
||||||
#include <ddk/ntifs.h>
|
#include <ntifs.h>
|
||||||
#include <ddk/tvout.h>
|
#include <tvout.h>
|
||||||
#include <ndk/ntndk.h>
|
#include <ntndk.h>
|
||||||
|
|
||||||
/* Win32 Headers */
|
/* Win32 Headers */
|
||||||
#define WINBASEAPI
|
#define WINBASEAPI
|
||||||
|
|
|
@ -42,8 +42,11 @@ typedef unsigned char BYTE;
|
||||||
/* REACTOS FIXME */
|
/* REACTOS FIXME */
|
||||||
#undef DeleteFile
|
#undef DeleteFile
|
||||||
/* This is deprecated and should be changed in the EXT2FS driver. */
|
/* This is deprecated and should be changed in the EXT2FS driver. */
|
||||||
|
|
||||||
|
/* FIXME : Those two definitions already exist in wdm.h
|
||||||
#define RtlLargeIntegerLessThan(a, b) (a).QuadPart < (b).QuadPart
|
#define RtlLargeIntegerLessThan(a, b) (a).QuadPart < (b).QuadPart
|
||||||
#define RtlLargeIntegerGreaterThan(a, b) (a).QuadPart > (b).QuadPart
|
#define RtlLargeIntegerGreaterThan(a, b) (a).QuadPart > (b).QuadPart
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
// the following include files should be in the inc sub-dir associated with this driver
|
// the following include files should be in the inc sub-dir associated with this driver
|
||||||
|
|
|
@ -17,15 +17,6 @@
|
||||||
#define PST_RS232 1
|
#define PST_RS232 1
|
||||||
#define COMMPROP_INITIALIZED 0xE73CF52E
|
#define COMMPROP_INITIALIZED 0xE73CF52E
|
||||||
|
|
||||||
#ifndef _NTIFS_
|
|
||||||
/* Why is it only defined in ntifs.h file? */
|
|
||||||
NTSTATUS NTAPI
|
|
||||||
IoAttachDeviceToDeviceStackSafe(
|
|
||||||
IN PDEVICE_OBJECT SourceDevice,
|
|
||||||
IN PDEVICE_OBJECT TargetDevice,
|
|
||||||
OUT PDEVICE_OBJECT *AttachedToDeviceObject);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
dsStopped,
|
dsStopped,
|
||||||
|
|
|
@ -77,7 +77,7 @@ extern "C" {
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID
|
VOID
|
||||||
DDKCDECLAPI
|
__cdecl
|
||||||
ScsiDebugPrint(
|
ScsiDebugPrint(
|
||||||
ULONG DebugPrintLevel,
|
ULONG DebugPrintLevel,
|
||||||
PCCHAR DebugMessage,
|
PCCHAR DebugMessage,
|
||||||
|
@ -1066,7 +1066,7 @@ IdeMediaStatus(
|
||||||
IN UCHAR Channel
|
IN UCHAR Channel
|
||||||
);
|
);
|
||||||
|
|
||||||
ULONG DDKAPI
|
ULONG NTAPI
|
||||||
AtapiFindController(
|
AtapiFindController(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN PVOID Context,
|
IN PVOID Context,
|
||||||
|
|
|
@ -1015,7 +1015,7 @@ UniataEnumBusMasterController(
|
||||||
PVOID Argument2
|
PVOID Argument2
|
||||||
);
|
);
|
||||||
|
|
||||||
extern ULONG DDKAPI
|
extern ULONG NTAPI
|
||||||
UniataFindCompatBusMasterController1(
|
UniataFindCompatBusMasterController1(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN PVOID Context,
|
IN PVOID Context,
|
||||||
|
@ -1025,7 +1025,7 @@ UniataFindCompatBusMasterController1(
|
||||||
OUT PBOOLEAN Again
|
OUT PBOOLEAN Again
|
||||||
);
|
);
|
||||||
|
|
||||||
extern ULONG DDKAPI
|
extern ULONG NTAPI
|
||||||
UniataFindCompatBusMasterController2(
|
UniataFindCompatBusMasterController2(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN PVOID Context,
|
IN PVOID Context,
|
||||||
|
@ -1044,7 +1044,7 @@ UniataAllocateLunExt(
|
||||||
ULONG NewNumberChannels
|
ULONG NewNumberChannels
|
||||||
);
|
);
|
||||||
|
|
||||||
extern ULONG DDKAPI
|
extern ULONG NTAPI
|
||||||
UniataFindBusMasterController(
|
UniataFindBusMasterController(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN PVOID Context,
|
IN PVOID Context,
|
||||||
|
@ -1054,7 +1054,7 @@ UniataFindBusMasterController(
|
||||||
OUT PBOOLEAN Again
|
OUT PBOOLEAN Again
|
||||||
);
|
);
|
||||||
|
|
||||||
extern ULONG DDKAPI
|
extern ULONG NTAPI
|
||||||
UniataFindFakeBusMasterController(
|
UniataFindFakeBusMasterController(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN PVOID Context,
|
IN PVOID Context,
|
||||||
|
|
|
@ -86,9 +86,7 @@
|
||||||
/* Compiler dependencies */
|
/* Compiler dependencies */
|
||||||
/***************************************************/
|
/***************************************************/
|
||||||
|
|
||||||
#define DDKAPI __stdcall
|
|
||||||
#define DDKFASTAPI __fastcall
|
#define DDKFASTAPI __fastcall
|
||||||
#define DDKCDECLAPI __cdecl
|
|
||||||
|
|
||||||
/* Are we under GNU C (mingw) ??? */
|
/* Are we under GNU C (mingw) ??? */
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
|
|
|
@ -94,7 +94,7 @@ BOOLEAN WinVer_WDM_Model = FALSE;
|
||||||
UCHAR g_foo = 0;
|
UCHAR g_foo = 0;
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
DDKAPI
|
NTAPI
|
||||||
AtapiResetController__(
|
AtapiResetController__(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN ULONG PathId,
|
IN ULONG PathId,
|
||||||
|
@ -115,7 +115,7 @@ AtapiHwInitialize__(
|
||||||
#ifndef UNIATA_CORE
|
#ifndef UNIATA_CORE
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
AtapiCallBack_X(
|
AtapiCallBack_X(
|
||||||
IN PVOID HwDeviceExtension
|
IN PVOID HwDeviceExtension
|
||||||
);
|
);
|
||||||
|
@ -129,13 +129,13 @@ AtapiCallBack_X(
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
RETTYPE_XXableInterrupts
|
RETTYPE_XXableInterrupts
|
||||||
DDKAPI
|
NTAPI
|
||||||
AtapiInterruptDpc(
|
AtapiInterruptDpc(
|
||||||
IN PVOID HwDeviceExtension
|
IN PVOID HwDeviceExtension
|
||||||
);
|
);
|
||||||
|
|
||||||
RETTYPE_XXableInterrupts
|
RETTYPE_XXableInterrupts
|
||||||
DDKAPI
|
NTAPI
|
||||||
AtapiEnableInterrupts__(
|
AtapiEnableInterrupts__(
|
||||||
IN PVOID HwDeviceExtension
|
IN PVOID HwDeviceExtension
|
||||||
);
|
);
|
||||||
|
@ -150,7 +150,7 @@ AtapiQueueTimerDpc(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSI_ADAPTER_CONTROL_STATUS
|
SCSI_ADAPTER_CONTROL_STATUS
|
||||||
DDKAPI
|
NTAPI
|
||||||
AtapiAdapterControl(
|
AtapiAdapterControl(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN SCSI_ADAPTER_CONTROL_TYPE ControlType,
|
IN SCSI_ADAPTER_CONTROL_TYPE ControlType,
|
||||||
|
@ -1005,7 +1005,7 @@ AtaUmode(PIDENTIFY_DATA2 ident)
|
||||||
#ifndef UNIATA_CORE
|
#ifndef UNIATA_CORE
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
AtapiTimerDpc(
|
AtapiTimerDpc(
|
||||||
IN PVOID HwDeviceExtension
|
IN PVOID HwDeviceExtension
|
||||||
)
|
)
|
||||||
|
@ -1856,7 +1856,7 @@ Return Value:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
DDKAPI
|
NTAPI
|
||||||
AtapiResetController(
|
AtapiResetController(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN ULONG PathId
|
IN ULONG PathId
|
||||||
|
@ -2598,7 +2598,7 @@ Return Value:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
DDKAPI
|
NTAPI
|
||||||
AtapiHwInitialize(
|
AtapiHwInitialize(
|
||||||
IN PVOID HwDeviceExtension
|
IN PVOID HwDeviceExtension
|
||||||
)
|
)
|
||||||
|
@ -3210,7 +3210,7 @@ Return Value:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
DDKAPI
|
NTAPI
|
||||||
AtapiInterrupt(
|
AtapiInterrupt(
|
||||||
IN PVOID HwDeviceExtension
|
IN PVOID HwDeviceExtension
|
||||||
)
|
)
|
||||||
|
@ -3400,7 +3400,7 @@ AtapiInterrupt2(
|
||||||
} // end AtapiInterrupt2()
|
} // end AtapiInterrupt2()
|
||||||
|
|
||||||
RETTYPE_XXableInterrupts
|
RETTYPE_XXableInterrupts
|
||||||
DDKAPI
|
NTAPI
|
||||||
AtapiInterruptDpc(
|
AtapiInterruptDpc(
|
||||||
IN PVOID HwDeviceExtension
|
IN PVOID HwDeviceExtension
|
||||||
)
|
)
|
||||||
|
@ -3437,7 +3437,7 @@ AtapiInterruptDpc(
|
||||||
|
|
||||||
|
|
||||||
RETTYPE_XXableInterrupts
|
RETTYPE_XXableInterrupts
|
||||||
DDKAPI
|
NTAPI
|
||||||
AtapiEnableInterrupts__(
|
AtapiEnableInterrupts__(
|
||||||
IN PVOID HwDeviceExtension
|
IN PVOID HwDeviceExtension
|
||||||
)
|
)
|
||||||
|
@ -7251,7 +7251,7 @@ Return Value:
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
DDKAPI
|
NTAPI
|
||||||
AtapiStartIo(
|
AtapiStartIo(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN PSCSI_REQUEST_BLOCK Srb
|
IN PSCSI_REQUEST_BLOCK Srb
|
||||||
|
@ -8343,7 +8343,7 @@ Return Value:
|
||||||
--*/
|
--*/
|
||||||
extern "C"
|
extern "C"
|
||||||
ULONG
|
ULONG
|
||||||
DDKAPI
|
NTAPI
|
||||||
DriverEntry(
|
DriverEntry(
|
||||||
IN PVOID DriverObject,
|
IN PVOID DriverObject,
|
||||||
IN PVOID Argument2
|
IN PVOID Argument2
|
||||||
|
@ -9059,7 +9059,7 @@ AtapiRegCheckParameterValue(
|
||||||
|
|
||||||
|
|
||||||
SCSI_ADAPTER_CONTROL_STATUS
|
SCSI_ADAPTER_CONTROL_STATUS
|
||||||
DDKAPI
|
NTAPI
|
||||||
AtapiAdapterControl(
|
AtapiAdapterControl(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN SCSI_ADAPTER_CONTROL_TYPE ControlType,
|
IN SCSI_ADAPTER_CONTROL_TYPE ControlType,
|
||||||
|
@ -9152,7 +9152,7 @@ AtapiAdapterControl(
|
||||||
extern "C"
|
extern "C"
|
||||||
NTHALAPI
|
NTHALAPI
|
||||||
VOID
|
VOID
|
||||||
DDKAPI
|
NTAPI
|
||||||
HalDisplayString (
|
HalDisplayString (
|
||||||
PUCHAR String
|
PUCHAR String
|
||||||
);
|
);
|
||||||
|
|
|
@ -424,38 +424,38 @@ typedef struct _SCSI_WMI_REQUEST_BLOCK {
|
||||||
|
|
||||||
typedef
|
typedef
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
(DDKAPI *PHW_INITIALIZE) (
|
(NTAPI *PHW_INITIALIZE) (
|
||||||
IN PVOID DeviceExtension
|
IN PVOID DeviceExtension
|
||||||
);
|
);
|
||||||
|
|
||||||
typedef
|
typedef
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
(DDKAPI *PHW_STARTIO) (
|
(NTAPI *PHW_STARTIO) (
|
||||||
IN PVOID DeviceExtension,
|
IN PVOID DeviceExtension,
|
||||||
IN PSCSI_REQUEST_BLOCK Srb
|
IN PSCSI_REQUEST_BLOCK Srb
|
||||||
);
|
);
|
||||||
|
|
||||||
typedef
|
typedef
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
(DDKAPI *PHW_INTERRUPT) (
|
(NTAPI *PHW_INTERRUPT) (
|
||||||
IN PVOID DeviceExtension
|
IN PVOID DeviceExtension
|
||||||
);
|
);
|
||||||
|
|
||||||
typedef
|
typedef
|
||||||
VOID
|
VOID
|
||||||
(DDKAPI *PHW_TIMER) (
|
(NTAPI *PHW_TIMER) (
|
||||||
IN PVOID DeviceExtension
|
IN PVOID DeviceExtension
|
||||||
);
|
);
|
||||||
|
|
||||||
typedef
|
typedef
|
||||||
VOID
|
VOID
|
||||||
(DDKAPI *PHW_DMA_STARTED) (
|
(NTAPI *PHW_DMA_STARTED) (
|
||||||
IN PVOID DeviceExtension
|
IN PVOID DeviceExtension
|
||||||
);
|
);
|
||||||
|
|
||||||
typedef
|
typedef
|
||||||
ULONG
|
ULONG
|
||||||
(DDKAPI *PHW_FIND_ADAPTER) (
|
(NTAPI *PHW_FIND_ADAPTER) (
|
||||||
IN PVOID DeviceExtension,
|
IN PVOID DeviceExtension,
|
||||||
IN PVOID HwContext,
|
IN PVOID HwContext,
|
||||||
IN PVOID BusInformation,
|
IN PVOID BusInformation,
|
||||||
|
@ -466,14 +466,14 @@ ULONG
|
||||||
|
|
||||||
typedef
|
typedef
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
(DDKAPI *PHW_RESET_BUS) (
|
(NTAPI *PHW_RESET_BUS) (
|
||||||
IN PVOID DeviceExtension,
|
IN PVOID DeviceExtension,
|
||||||
IN ULONG PathId
|
IN ULONG PathId
|
||||||
);
|
);
|
||||||
|
|
||||||
typedef
|
typedef
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
(DDKAPI *PHW_ADAPTER_STATE) (
|
(NTAPI *PHW_ADAPTER_STATE) (
|
||||||
IN PVOID DeviceExtension,
|
IN PVOID DeviceExtension,
|
||||||
IN PVOID Context,
|
IN PVOID Context,
|
||||||
IN BOOLEAN SaveState
|
IN BOOLEAN SaveState
|
||||||
|
@ -481,7 +481,7 @@ BOOLEAN
|
||||||
|
|
||||||
typedef
|
typedef
|
||||||
SCSI_ADAPTER_CONTROL_STATUS
|
SCSI_ADAPTER_CONTROL_STATUS
|
||||||
(DDKAPI *PHW_ADAPTER_CONTROL) (
|
(NTAPI *PHW_ADAPTER_CONTROL) (
|
||||||
IN PVOID DeviceExtension,
|
IN PVOID DeviceExtension,
|
||||||
IN SCSI_ADAPTER_CONTROL_TYPE ControlType,
|
IN SCSI_ADAPTER_CONTROL_TYPE ControlType,
|
||||||
IN PVOID Parameters
|
IN PVOID Parameters
|
||||||
|
@ -607,7 +607,7 @@ typedef struct _HW_INITIALIZATION_DATA_COMMON {
|
||||||
//
|
//
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
ULONG DDKAPI
|
ULONG NTAPI
|
||||||
ScsiPortInitialize(
|
ScsiPortInitialize(
|
||||||
IN PVOID Argument1,
|
IN PVOID Argument1,
|
||||||
IN PVOID Argument2,
|
IN PVOID Argument2,
|
||||||
|
@ -616,14 +616,14 @@ ScsiPortInitialize(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortFreeDeviceBase(
|
ScsiPortFreeDeviceBase(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN PVOID MappedAddress
|
IN PVOID MappedAddress
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
ULONG DDKAPI
|
ULONG NTAPI
|
||||||
ScsiPortGetBusData(
|
ScsiPortGetBusData(
|
||||||
IN PVOID DeviceExtension,
|
IN PVOID DeviceExtension,
|
||||||
IN ULONG BusDataType,
|
IN ULONG BusDataType,
|
||||||
|
@ -634,7 +634,7 @@ ScsiPortGetBusData(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
ULONG DDKAPI
|
ULONG NTAPI
|
||||||
ScsiPortSetBusDataByOffset(
|
ScsiPortSetBusDataByOffset(
|
||||||
IN PVOID DeviceExtension,
|
IN PVOID DeviceExtension,
|
||||||
IN ULONG BusDataType,
|
IN ULONG BusDataType,
|
||||||
|
@ -646,7 +646,7 @@ ScsiPortSetBusDataByOffset(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
PVOID DDKAPI
|
PVOID NTAPI
|
||||||
ScsiPortGetDeviceBase(
|
ScsiPortGetDeviceBase(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN INTERFACE_TYPE BusType,
|
IN INTERFACE_TYPE BusType,
|
||||||
|
@ -657,7 +657,7 @@ ScsiPortGetDeviceBase(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
PVOID DDKAPI
|
PVOID NTAPI
|
||||||
ScsiPortGetLogicalUnit(
|
ScsiPortGetLogicalUnit(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN UCHAR PathId,
|
IN UCHAR PathId,
|
||||||
|
@ -666,7 +666,7 @@ ScsiPortGetLogicalUnit(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
PSCSI_REQUEST_BLOCK DDKAPI
|
PSCSI_REQUEST_BLOCK NTAPI
|
||||||
ScsiPortGetSrb(
|
ScsiPortGetSrb(
|
||||||
IN PVOID DeviceExtension,
|
IN PVOID DeviceExtension,
|
||||||
IN UCHAR PathId,
|
IN UCHAR PathId,
|
||||||
|
@ -676,7 +676,7 @@ ScsiPortGetSrb(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
SCSI_PHYSICAL_ADDRESS DDKAPI
|
SCSI_PHYSICAL_ADDRESS NTAPI
|
||||||
ScsiPortGetPhysicalAddress(
|
ScsiPortGetPhysicalAddress(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN PSCSI_REQUEST_BLOCK Srb,
|
IN PSCSI_REQUEST_BLOCK Srb,
|
||||||
|
@ -685,14 +685,14 @@ ScsiPortGetPhysicalAddress(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
PVOID DDKAPI
|
PVOID NTAPI
|
||||||
ScsiPortGetVirtualAddress(
|
ScsiPortGetVirtualAddress(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN SCSI_PHYSICAL_ADDRESS PhysicalAddress
|
IN SCSI_PHYSICAL_ADDRESS PhysicalAddress
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
PVOID DDKAPI
|
PVOID NTAPI
|
||||||
ScsiPortGetUncachedExtension(
|
ScsiPortGetUncachedExtension(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN PPORT_CONFIGURATION_INFORMATION ConfigInfo,
|
IN PPORT_CONFIGURATION_INFORMATION ConfigInfo,
|
||||||
|
@ -700,13 +700,13 @@ ScsiPortGetUncachedExtension(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortFlushDma(
|
ScsiPortFlushDma(
|
||||||
IN PVOID DeviceExtension
|
IN PVOID DeviceExtension
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortIoMapTransfer(
|
ScsiPortIoMapTransfer(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN PSCSI_REQUEST_BLOCK Srb,
|
IN PSCSI_REQUEST_BLOCK Srb,
|
||||||
|
@ -715,7 +715,7 @@ ScsiPortIoMapTransfer(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKCDECLAPI
|
VOID __cdecl
|
||||||
ScsiPortNotification(
|
ScsiPortNotification(
|
||||||
IN SCSI_NOTIFICATION_TYPE NotificationType,
|
IN SCSI_NOTIFICATION_TYPE NotificationType,
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
|
@ -723,7 +723,7 @@ ScsiPortNotification(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortLogError(
|
ScsiPortLogError(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
|
IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
|
||||||
|
@ -735,7 +735,7 @@ ScsiPortLogError(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortCompleteRequest(
|
ScsiPortCompleteRequest(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN UCHAR PathId,
|
IN UCHAR PathId,
|
||||||
|
@ -745,7 +745,7 @@ ScsiPortCompleteRequest(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortMoveMemory(
|
ScsiPortMoveMemory(
|
||||||
IN PVOID WriteBuffer,
|
IN PVOID WriteBuffer,
|
||||||
IN PVOID ReadBuffer,
|
IN PVOID ReadBuffer,
|
||||||
|
@ -753,25 +753,25 @@ ScsiPortMoveMemory(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
UCHAR DDKAPI
|
UCHAR NTAPI
|
||||||
ScsiPortReadPortUchar(
|
ScsiPortReadPortUchar(
|
||||||
IN PUCHAR Port
|
IN PUCHAR Port
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
USHORT DDKAPI
|
USHORT NTAPI
|
||||||
ScsiPortReadPortUshort(
|
ScsiPortReadPortUshort(
|
||||||
IN PUSHORT Port
|
IN PUSHORT Port
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
ULONG DDKAPI
|
ULONG NTAPI
|
||||||
ScsiPortReadPortUlong(
|
ScsiPortReadPortUlong(
|
||||||
IN PULONG Port
|
IN PULONG Port
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortReadPortBufferUchar(
|
ScsiPortReadPortBufferUchar(
|
||||||
IN PUCHAR Port,
|
IN PUCHAR Port,
|
||||||
IN PUCHAR Buffer,
|
IN PUCHAR Buffer,
|
||||||
|
@ -779,7 +779,7 @@ ScsiPortReadPortBufferUchar(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortReadPortBufferUshort(
|
ScsiPortReadPortBufferUshort(
|
||||||
IN PUSHORT Port,
|
IN PUSHORT Port,
|
||||||
IN PUSHORT Buffer,
|
IN PUSHORT Buffer,
|
||||||
|
@ -787,7 +787,7 @@ ScsiPortReadPortBufferUshort(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortReadPortBufferUlong(
|
ScsiPortReadPortBufferUlong(
|
||||||
IN PULONG Port,
|
IN PULONG Port,
|
||||||
IN PULONG Buffer,
|
IN PULONG Buffer,
|
||||||
|
@ -795,25 +795,25 @@ ScsiPortReadPortBufferUlong(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
UCHAR DDKAPI
|
UCHAR NTAPI
|
||||||
ScsiPortReadRegisterUchar(
|
ScsiPortReadRegisterUchar(
|
||||||
IN PUCHAR Register
|
IN PUCHAR Register
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
USHORT DDKAPI
|
USHORT NTAPI
|
||||||
ScsiPortReadRegisterUshort(
|
ScsiPortReadRegisterUshort(
|
||||||
IN PUSHORT Register
|
IN PUSHORT Register
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
ULONG DDKAPI
|
ULONG NTAPI
|
||||||
ScsiPortReadRegisterUlong(
|
ScsiPortReadRegisterUlong(
|
||||||
IN PULONG Register
|
IN PULONG Register
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortReadRegisterBufferUchar(
|
ScsiPortReadRegisterBufferUchar(
|
||||||
IN PUCHAR Register,
|
IN PUCHAR Register,
|
||||||
IN PUCHAR Buffer,
|
IN PUCHAR Buffer,
|
||||||
|
@ -821,7 +821,7 @@ ScsiPortReadRegisterBufferUchar(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortReadRegisterBufferUshort(
|
ScsiPortReadRegisterBufferUshort(
|
||||||
IN PUSHORT Register,
|
IN PUSHORT Register,
|
||||||
IN PUSHORT Buffer,
|
IN PUSHORT Buffer,
|
||||||
|
@ -829,7 +829,7 @@ ScsiPortReadRegisterBufferUshort(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortReadRegisterBufferUlong(
|
ScsiPortReadRegisterBufferUlong(
|
||||||
IN PULONG Register,
|
IN PULONG Register,
|
||||||
IN PULONG Buffer,
|
IN PULONG Buffer,
|
||||||
|
@ -837,34 +837,34 @@ ScsiPortReadRegisterBufferUlong(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortStallExecution(
|
ScsiPortStallExecution(
|
||||||
IN ULONG Delay
|
IN ULONG Delay
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortWritePortUchar(
|
ScsiPortWritePortUchar(
|
||||||
IN PUCHAR Port,
|
IN PUCHAR Port,
|
||||||
IN UCHAR Value
|
IN UCHAR Value
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortWritePortUshort(
|
ScsiPortWritePortUshort(
|
||||||
IN PUSHORT Port,
|
IN PUSHORT Port,
|
||||||
IN USHORT Value
|
IN USHORT Value
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortWritePortUlong(
|
ScsiPortWritePortUlong(
|
||||||
IN PULONG Port,
|
IN PULONG Port,
|
||||||
IN ULONG Value
|
IN ULONG Value
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortWritePortBufferUchar(
|
ScsiPortWritePortBufferUchar(
|
||||||
IN PUCHAR Port,
|
IN PUCHAR Port,
|
||||||
IN PUCHAR Buffer,
|
IN PUCHAR Buffer,
|
||||||
|
@ -872,7 +872,7 @@ ScsiPortWritePortBufferUchar(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortWritePortBufferUshort(
|
ScsiPortWritePortBufferUshort(
|
||||||
IN PUSHORT Port,
|
IN PUSHORT Port,
|
||||||
IN PUSHORT Buffer,
|
IN PUSHORT Buffer,
|
||||||
|
@ -880,7 +880,7 @@ ScsiPortWritePortBufferUshort(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortWritePortBufferUlong(
|
ScsiPortWritePortBufferUlong(
|
||||||
IN PULONG Port,
|
IN PULONG Port,
|
||||||
IN PULONG Buffer,
|
IN PULONG Buffer,
|
||||||
|
@ -888,28 +888,28 @@ ScsiPortWritePortBufferUlong(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortWriteRegisterUchar(
|
ScsiPortWriteRegisterUchar(
|
||||||
IN PUCHAR Register,
|
IN PUCHAR Register,
|
||||||
IN UCHAR Value
|
IN UCHAR Value
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortWriteRegisterUshort(
|
ScsiPortWriteRegisterUshort(
|
||||||
IN PUSHORT Register,
|
IN PUSHORT Register,
|
||||||
IN USHORT Value
|
IN USHORT Value
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortWriteRegisterUlong(
|
ScsiPortWriteRegisterUlong(
|
||||||
IN PULONG Register,
|
IN PULONG Register,
|
||||||
IN ULONG Value
|
IN ULONG Value
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortWriteRegisterBufferUchar(
|
ScsiPortWriteRegisterBufferUchar(
|
||||||
IN PUCHAR Register,
|
IN PUCHAR Register,
|
||||||
IN PUCHAR Buffer,
|
IN PUCHAR Buffer,
|
||||||
|
@ -917,7 +917,7 @@ ScsiPortWriteRegisterBufferUchar(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortWriteRegisterBufferUshort(
|
ScsiPortWriteRegisterBufferUshort(
|
||||||
IN PUSHORT Register,
|
IN PUSHORT Register,
|
||||||
IN PUSHORT Buffer,
|
IN PUSHORT Buffer,
|
||||||
|
@ -925,7 +925,7 @@ ScsiPortWriteRegisterBufferUshort(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKAPI
|
VOID NTAPI
|
||||||
ScsiPortWriteRegisterBufferUlong(
|
ScsiPortWriteRegisterBufferUlong(
|
||||||
IN PULONG Register,
|
IN PULONG Register,
|
||||||
IN PULONG Buffer,
|
IN PULONG Buffer,
|
||||||
|
@ -933,13 +933,13 @@ ScsiPortWriteRegisterBufferUlong(
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
SCSI_PHYSICAL_ADDRESS DDKAPI
|
SCSI_PHYSICAL_ADDRESS NTAPI
|
||||||
ScsiPortConvertUlongToPhysicalAddress(
|
ScsiPortConvertUlongToPhysicalAddress(
|
||||||
ULONG UlongAddress
|
ULONG UlongAddress
|
||||||
);
|
);
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
ULONG DDKAPI
|
ULONG NTAPI
|
||||||
ScsiPortConvertPhysicalAddressToUlong(
|
ScsiPortConvertPhysicalAddressToUlong(
|
||||||
SCSI_PHYSICAL_ADDRESS Address
|
SCSI_PHYSICAL_ADDRESS Address
|
||||||
);
|
);
|
||||||
|
@ -947,7 +947,7 @@ ScsiPortConvertPhysicalAddressToUlong(
|
||||||
#define ScsiPortConvertPhysicalAddressToUlong(Address) ((Address).LowPart)
|
#define ScsiPortConvertPhysicalAddressToUlong(Address) ((Address).LowPart)
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
BOOLEAN DDKAPI
|
BOOLEAN NTAPI
|
||||||
ScsiPortValidateRange(
|
ScsiPortValidateRange(
|
||||||
IN PVOID HwDeviceExtension,
|
IN PVOID HwDeviceExtension,
|
||||||
IN INTERFACE_TYPE BusType,
|
IN INTERFACE_TYPE BusType,
|
||||||
|
@ -960,7 +960,7 @@ ScsiPortValidateRange(
|
||||||
// begin_ntminitape
|
// begin_ntminitape
|
||||||
|
|
||||||
SCSIPORT_API
|
SCSIPORT_API
|
||||||
VOID DDKCDECLAPI
|
VOID __cdecl
|
||||||
ScsiDebugPrint(
|
ScsiDebugPrint(
|
||||||
ULONG DebugPrintLevel,
|
ULONG DebugPrintLevel,
|
||||||
PCCHAR DebugMessage,
|
PCCHAR DebugMessage,
|
||||||
|
|
|
@ -26,7 +26,6 @@
|
||||||
|
|
||||||
#define DDKFASTAPI __fastcall
|
#define DDKFASTAPI __fastcall
|
||||||
#define FASTCALL __fastcall
|
#define FASTCALL __fastcall
|
||||||
#define DDKCDECLAPI __cdecl
|
|
||||||
|
|
||||||
ULONG DbgPrint(PCCH Format,...);
|
ULONG DbgPrint(PCCH Format,...);
|
||||||
|
|
||||||
|
|
|
@ -9,9 +9,9 @@
|
||||||
</if>
|
</if>
|
||||||
|
|
||||||
<if property="ARCH" value="amd64">
|
<if property="ARCH" value="amd64">
|
||||||
<directory name="halx86">
|
<directory name="halx86">
|
||||||
<xi:include href="halx86/directory.rbuild" />
|
<xi:include href="halx86/directory.rbuild" />
|
||||||
</directory>
|
</directory>
|
||||||
</if>
|
</if>
|
||||||
|
|
||||||
<if property="ARCH" value="powerpc">
|
<if property="ARCH" value="powerpc">
|
||||||
|
|
|
@ -8,15 +8,17 @@
|
||||||
/* INCLUDES ******************************************************************/
|
/* INCLUDES ******************************************************************/
|
||||||
|
|
||||||
#include <asm.h>
|
#include <asm.h>
|
||||||
#include <internal/i386/asmmacro.S>
|
|
||||||
.intel_syntax noprefix
|
.intel_syntax noprefix
|
||||||
|
|
||||||
/* GLOBALS *******************************************************************/
|
/* GLOBALS *******************************************************************/
|
||||||
|
|
||||||
|
.globl _HalpPerfCounter
|
||||||
_HalpLastPerfCounterLow: .long 0
|
_HalpLastPerfCounterLow: .long 0
|
||||||
_HalpLastPerfCounterHigh: .long 0
|
_HalpLastPerfCounterHigh: .long 0
|
||||||
|
_HalpPerfCounter:
|
||||||
_HalpPerfCounterLow: .long 0
|
_HalpPerfCounterLow: .long 0
|
||||||
_HalpPerfCounterHigh: .long 0
|
_HalpPerfCounterHigh: .long 0
|
||||||
|
_HalpSystemHardwareFlags: .long 0
|
||||||
|
|
||||||
_UnhandledMsg:
|
_UnhandledMsg:
|
||||||
.asciz "\n\x7\x7!!! Unhandled or Unexpected Code at line: %lx!!!\n"
|
.asciz "\n\x7\x7!!! Unhandled or Unexpected Code at line: %lx!!!\n"
|
||||||
|
@ -327,6 +329,7 @@ AndItsNotYou:
|
||||||
ret
|
ret
|
||||||
.endfunc
|
.endfunc
|
||||||
|
|
||||||
|
#ifndef _MINIHAL_
|
||||||
.globl _KeStallExecutionProcessor@4
|
.globl _KeStallExecutionProcessor@4
|
||||||
.func KeStallExecutionProcessor@4
|
.func KeStallExecutionProcessor@4
|
||||||
_KeStallExecutionProcessor@4:
|
_KeStallExecutionProcessor@4:
|
||||||
|
@ -357,6 +360,7 @@ Done:
|
||||||
/* Return */
|
/* Return */
|
||||||
ret 4
|
ret 4
|
||||||
.endfunc
|
.endfunc
|
||||||
|
#endif
|
||||||
|
|
||||||
.global _KeQueryPerformanceCounter@4
|
.global _KeQueryPerformanceCounter@4
|
||||||
.func KeQueryPerformanceCounter@4
|
.func KeQueryPerformanceCounter@4
|
||||||
|
@ -517,72 +521,3 @@ InvalidCount:
|
||||||
mov _HalpLastPerfCounterHigh, eax
|
mov _HalpLastPerfCounterHigh, eax
|
||||||
jmp LoopPreInt
|
jmp LoopPreInt
|
||||||
.endfunc
|
.endfunc
|
||||||
|
|
||||||
.globl _HalpClockInterrupt@0
|
|
||||||
.func HalpClockInterrupt@0
|
|
||||||
TRAP_FIXUPS hci_a, hci_t, DoFixupV86, DoFixupAbios
|
|
||||||
_HalpClockInterrupt@0:
|
|
||||||
|
|
||||||
/* Enter trap */
|
|
||||||
INT_PROLOG hci_a, hci_t, DoPushFakeErrorCode
|
|
||||||
|
|
||||||
/* Push vector and make stack for IRQL */
|
|
||||||
push 0x30
|
|
||||||
sub esp, 4
|
|
||||||
|
|
||||||
/* Begin the interrupt */
|
|
||||||
push esp
|
|
||||||
push 0x30
|
|
||||||
push CLOCK2_LEVEL
|
|
||||||
call _HalBeginSystemInterrupt@12
|
|
||||||
|
|
||||||
/* Check if it's spurious */
|
|
||||||
or al, al
|
|
||||||
jz Spurious
|
|
||||||
|
|
||||||
/* Update the performance counter */
|
|
||||||
xor ebx, ebx
|
|
||||||
mov eax, _HalpCurrentRollOver
|
|
||||||
add _HalpPerfCounterLow, eax
|
|
||||||
adc _HalpPerfCounterHigh, ebx
|
|
||||||
|
|
||||||
/* Get the time increment and check if someone changed the clock rate */
|
|
||||||
mov eax, _HalpCurrentTimeIncrement
|
|
||||||
cmp _HalpClockSetMSRate, ebx
|
|
||||||
jz _KeUpdateSystemTime@0
|
|
||||||
|
|
||||||
/* FIXME: Someone did! */
|
|
||||||
int 3
|
|
||||||
|
|
||||||
Spurious:
|
|
||||||
|
|
||||||
/* Exit the interrupt */
|
|
||||||
add esp, 8
|
|
||||||
jmp _Kei386EoiHelper@0
|
|
||||||
.endfunc
|
|
||||||
|
|
||||||
.globl _HalpProfileInterrupt@0
|
|
||||||
.func HalpProfileInterrupt@0
|
|
||||||
TRAP_FIXUPS hpi_a, hpi_t, DoFixupV86, DoFixupAbios
|
|
||||||
_HalpProfileInterrupt@0:
|
|
||||||
|
|
||||||
/* Enter trap */
|
|
||||||
INT_PROLOG hpi_a, hpi_t, DoPushFakeErrorCode
|
|
||||||
|
|
||||||
/* Push vector and make stack for IRQL */
|
|
||||||
push 0x38
|
|
||||||
sub esp, 4
|
|
||||||
|
|
||||||
/* Begin the interrupt */
|
|
||||||
push esp
|
|
||||||
push 0x38
|
|
||||||
push PROFILE_LEVEL
|
|
||||||
call _HalBeginSystemInterrupt@12
|
|
||||||
|
|
||||||
/* Check if it's spurious */
|
|
||||||
or al, al
|
|
||||||
jz Spurious
|
|
||||||
|
|
||||||
/* FIXME: We should not be getting profile interrupts yet! */
|
|
||||||
int 3
|
|
||||||
.endfunc
|
|
||||||
|
|
|
@ -1,435 +0,0 @@
|
||||||
/*
|
|
||||||
* FILE: hal/halx86/generic/bios.S
|
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
|
||||||
* PURPOSE: V8086 Real-Mode BIOS Thunking
|
|
||||||
* PROGRAMMER: Alex Ionescu (alex@relsoft.net)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* INCLUDES ******************************************************************/
|
|
||||||
|
|
||||||
#include <asm.h>
|
|
||||||
#include <internal/i386/asmmacro.S>
|
|
||||||
.intel_syntax noprefix
|
|
||||||
|
|
||||||
//
|
|
||||||
// HAL BIOS Frame
|
|
||||||
//
|
|
||||||
#define HALP_BIOS_FRAME_SS 0x00
|
|
||||||
#define HALP_BIOS_FRAME_ESP 0x04
|
|
||||||
#define HALP_BIOS_FRAME_EFLAGS 0x08
|
|
||||||
#define HALP_BIOS_FRAME_CS 0x0C
|
|
||||||
#define HALP_BIOS_FRAME_EIP 0x10
|
|
||||||
#define HALP_BIOS_FRAME_TRAP_FRAME 0x14
|
|
||||||
#define HALP_BIOS_FRAME_CS_LIMIT 0x18
|
|
||||||
#define HALP_BIOS_FRAME_CS_BASE 0x1C
|
|
||||||
#define HALP_BIOS_FRAME_CS_FLAGS 0x20
|
|
||||||
#define HALP_BIOS_FRAME_SS_LIMIT 0x24
|
|
||||||
#define HALP_BIOS_FRAME_SS_BASE 0x28
|
|
||||||
#define HALP_BIOS_FRAME_SS_FLAGS 0x2C
|
|
||||||
#define HALP_BIOS_FRAME_PREFIX 0x30
|
|
||||||
#define HALP_BIOS_FRAME_LENGTH 0x34
|
|
||||||
|
|
||||||
/* GLOBALS *******************************************************************/
|
|
||||||
|
|
||||||
_HalpSavedEsp:
|
|
||||||
.long 0
|
|
||||||
|
|
||||||
_InvalidMsg:
|
|
||||||
.asciz "HAL: An invalid V86 opcode was encountered at address %x:%x\n"
|
|
||||||
|
|
||||||
_InvalidGpfMsg:
|
|
||||||
.asciz "HAL: Trap0D while not in V86 mode\n"
|
|
||||||
|
|
||||||
_UnhandledMsg:
|
|
||||||
.asciz "\n\x7\x7!!! Unhandled or Unexpected Code at line: %lx [%s]!!!\n"
|
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
|
||||||
|
|
||||||
.globl _HalpBiosCall@0
|
|
||||||
.func HalpBiosCall@0
|
|
||||||
_HalpBiosCall@0:
|
|
||||||
|
|
||||||
/* Set up stack pointer */
|
|
||||||
push ebp
|
|
||||||
mov ebp, esp
|
|
||||||
|
|
||||||
/* Build a trap frame */
|
|
||||||
pushfd
|
|
||||||
push edi
|
|
||||||
push esi
|
|
||||||
push ebx
|
|
||||||
push ds
|
|
||||||
push es
|
|
||||||
push fs
|
|
||||||
push gs
|
|
||||||
push offset _HalpRealModeEnd
|
|
||||||
|
|
||||||
/* Save the stack */
|
|
||||||
mov _HalpSavedEsp, esp
|
|
||||||
|
|
||||||
/* Turn off alignment faults */
|
|
||||||
mov eax, cr0
|
|
||||||
and eax, ~CR0_AM
|
|
||||||
mov cr0, eax
|
|
||||||
|
|
||||||
/* Setup a new stack */
|
|
||||||
mov esi, fs:KPCR_TSS
|
|
||||||
mov eax, esp
|
|
||||||
sub eax, NPX_FRAME_LENGTH
|
|
||||||
mov [esi+KTSS_ESP0], eax
|
|
||||||
|
|
||||||
/* Save V86 registers */
|
|
||||||
push 0
|
|
||||||
push 0
|
|
||||||
push 0
|
|
||||||
push 0
|
|
||||||
push 0x2000
|
|
||||||
|
|
||||||
/* Get linear delta between stack and code */
|
|
||||||
mov eax, offset _HalpRealModeEnd-4
|
|
||||||
sub eax, offset _HalpRealModeStart
|
|
||||||
|
|
||||||
/* Get offset of code */
|
|
||||||
mov edx, offset _HalpRealModeStart
|
|
||||||
and edx, 0xFFF
|
|
||||||
|
|
||||||
/* Add offset to linear address and save the new V86 SP */
|
|
||||||
add eax, edx
|
|
||||||
push eax
|
|
||||||
|
|
||||||
/* Start building interrupt frame. Setup V86 EFLAGS and IOPL 3 */
|
|
||||||
pushfd
|
|
||||||
or dword ptr [esp], EFLAGS_V86_MASK
|
|
||||||
or dword ptr [esp], 0x3000
|
|
||||||
|
|
||||||
/* Push the CS and IP */
|
|
||||||
push 0x2000
|
|
||||||
push edx
|
|
||||||
|
|
||||||
/* Do the interrupt return (jump to V86 mode) */
|
|
||||||
iretd
|
|
||||||
|
|
||||||
.globl _HalpRealModeStart
|
|
||||||
_HalpRealModeStart:
|
|
||||||
|
|
||||||
/* Set mode 13 */
|
|
||||||
mov ax, 0x12
|
|
||||||
.byte 0
|
|
||||||
.byte 0
|
|
||||||
|
|
||||||
/* Do the interrupt */
|
|
||||||
int 0x10
|
|
||||||
|
|
||||||
/* BOP to exit V86 mode */
|
|
||||||
.byte 0xC4
|
|
||||||
.byte 0xC4
|
|
||||||
|
|
||||||
/* The stack lives here */
|
|
||||||
.align 4
|
|
||||||
.space 2048
|
|
||||||
.globl _HalpRealModeEnd
|
|
||||||
_HalpRealModeEnd:
|
|
||||||
|
|
||||||
/* We're back, clean up the trap frame */
|
|
||||||
pop gs
|
|
||||||
pop fs
|
|
||||||
pop es
|
|
||||||
pop ds
|
|
||||||
pop ebx
|
|
||||||
pop esi
|
|
||||||
pop edi
|
|
||||||
popfd
|
|
||||||
|
|
||||||
/* Return to caller */
|
|
||||||
pop ebp
|
|
||||||
ret 0
|
|
||||||
.endfunc
|
|
||||||
|
|
||||||
.globl _HalpOpcodeInvalid@0
|
|
||||||
.func HalpOpcodeInvalid@0
|
|
||||||
_HalpOpcodeInvalid@0:
|
|
||||||
|
|
||||||
/* This should never happen -- is the IOPM damaged? */
|
|
||||||
push [esi+HALP_BIOS_FRAME_EIP]
|
|
||||||
push [esi+HALP_BIOS_FRAME_CS]
|
|
||||||
push offset _InvalidMsg
|
|
||||||
call _DbgPrint
|
|
||||||
add esp, 12
|
|
||||||
|
|
||||||
/* Break */
|
|
||||||
int 3
|
|
||||||
|
|
||||||
/* Nothing to return */
|
|
||||||
xor eax, eax
|
|
||||||
ret 0
|
|
||||||
.endfunc
|
|
||||||
|
|
||||||
.globl _HalpPushInt@0
|
|
||||||
.func HalpPushInt@0
|
|
||||||
_HalpPushInt@0:
|
|
||||||
|
|
||||||
/* Save EBX */
|
|
||||||
push ebx
|
|
||||||
|
|
||||||
/* Get SS offset and base */
|
|
||||||
mov edx, [esi+HALP_BIOS_FRAME_ESP]
|
|
||||||
mov ebx, [esi+HALP_BIOS_FRAME_SS_BASE]
|
|
||||||
|
|
||||||
/* Convert to 16-bits */
|
|
||||||
and edx, 0xFFFF
|
|
||||||
sub dx, 2
|
|
||||||
|
|
||||||
/* Get EFLAGS and write them into the linear address of SP */
|
|
||||||
mov ax, word ptr [esi+HALP_BIOS_FRAME_EFLAGS]
|
|
||||||
mov [ebx+edx], ax
|
|
||||||
sub dx, 2
|
|
||||||
|
|
||||||
/* Get CS segment and write it into SP */
|
|
||||||
mov ax, word ptr [esi+HALP_BIOS_FRAME_CS]
|
|
||||||
mov [ebx+edx], ax
|
|
||||||
sub dx, 2
|
|
||||||
|
|
||||||
/* Get IP and write it into SP */
|
|
||||||
mov ax, word ptr [esi+HALP_BIOS_FRAME_EIP]
|
|
||||||
mov [ebx+edx], ax
|
|
||||||
|
|
||||||
/* Get new IP value (the interrupt ID is in ECX, so this is in the IVT) */
|
|
||||||
mov eax, [ecx*4]
|
|
||||||
push eax
|
|
||||||
|
|
||||||
/* Now save the new IP */
|
|
||||||
movzx eax, ax
|
|
||||||
mov [esi+HALP_BIOS_FRAME_EIP], eax
|
|
||||||
|
|
||||||
/* Save the new CS of this IP */
|
|
||||||
pop eax
|
|
||||||
shr eax, 16
|
|
||||||
mov [esi+HALP_BIOS_FRAME_CS], eax
|
|
||||||
|
|
||||||
/* Update the stack pointer after our manual interrupt frame construction */
|
|
||||||
mov word ptr [esi+HALP_BIOS_FRAME_ESP], dx
|
|
||||||
|
|
||||||
/* Get CS and convert it to linear format */
|
|
||||||
mov eax, [esi+HALP_BIOS_FRAME_CS]
|
|
||||||
shl eax, 4
|
|
||||||
mov [esi+HALP_BIOS_FRAME_CS_BASE], eax
|
|
||||||
mov dword ptr [esi+HALP_BIOS_FRAME_CS_LIMIT], 0xFFFF
|
|
||||||
mov dword ptr [esi+HALP_BIOS_FRAME_CS_FLAGS], 0
|
|
||||||
|
|
||||||
/* Return success and restore EBX */
|
|
||||||
mov eax, 1
|
|
||||||
pop ebx
|
|
||||||
ret 0
|
|
||||||
.endfunc
|
|
||||||
|
|
||||||
.globl _HalpOpcodeINTnn@0
|
|
||||||
.func HalpOpcodeINTnn@0
|
|
||||||
_HalpOpcodeINTnn@0:
|
|
||||||
|
|
||||||
/* Save non-volatiles and stack */
|
|
||||||
push ebp
|
|
||||||
push esi
|
|
||||||
push ebx
|
|
||||||
|
|
||||||
/* Get SS and convert it to linear format */
|
|
||||||
mov eax, [esi+HALP_BIOS_FRAME_SS]
|
|
||||||
shl eax, 4
|
|
||||||
mov [esi+HALP_BIOS_FRAME_SS_BASE], eax
|
|
||||||
mov dword ptr [esi+HALP_BIOS_FRAME_SS_LIMIT], 0xFFFF
|
|
||||||
mov dword ptr [esi+HALP_BIOS_FRAME_SS_FLAGS], 0
|
|
||||||
|
|
||||||
/* Increase IP and check if we're past the CS limit */
|
|
||||||
inc dword ptr [esi+HALP_BIOS_FRAME_EIP]
|
|
||||||
mov edi, [esi+HALP_BIOS_FRAME_EIP]
|
|
||||||
cmp edi, [esi+HALP_BIOS_FRAME_CS_LIMIT]
|
|
||||||
ja EipLimitReached
|
|
||||||
|
|
||||||
/* Convert IP to linear address and read the interrupt number */
|
|
||||||
add edi, [esi+HALP_BIOS_FRAME_CS_BASE]
|
|
||||||
movzx ecx, byte ptr [edi]
|
|
||||||
|
|
||||||
/* Increase EIP and do the interrupt, check for status */
|
|
||||||
inc dword ptr [esi+HALP_BIOS_FRAME_EIP]
|
|
||||||
call _HalpPushInt@0
|
|
||||||
test eax, 0xFFFF
|
|
||||||
jz Done
|
|
||||||
|
|
||||||
/* Update the trap frame */
|
|
||||||
mov ebp, [esi+HALP_BIOS_FRAME_TRAP_FRAME]
|
|
||||||
mov eax, [esi+HALP_BIOS_FRAME_SS]
|
|
||||||
mov [ebp+KTRAP_FRAME_SS], eax
|
|
||||||
mov eax, [esi+HALP_BIOS_FRAME_ESP]
|
|
||||||
mov [ebp+KTRAP_FRAME_ESP], eax
|
|
||||||
mov eax, [esi+HALP_BIOS_FRAME_CS]
|
|
||||||
mov [ebp+KTRAP_FRAME_CS], eax
|
|
||||||
mov eax, [esi+HALP_BIOS_FRAME_EFLAGS]
|
|
||||||
mov [ebp+KTRAP_FRAME_EFLAGS], eax
|
|
||||||
|
|
||||||
/* Set success code */
|
|
||||||
mov eax, 1
|
|
||||||
|
|
||||||
Done:
|
|
||||||
/* Restore volatiles */
|
|
||||||
pop ebx
|
|
||||||
pop edi
|
|
||||||
pop ebp
|
|
||||||
ret 0
|
|
||||||
|
|
||||||
EipLimitReached:
|
|
||||||
/* Set failure code */
|
|
||||||
xor eax, eax
|
|
||||||
jmp Done
|
|
||||||
.endfunc
|
|
||||||
|
|
||||||
.globl _HalpDispatchV86Opcode@0
|
|
||||||
.func HalpDispatchV86Opcode@0
|
|
||||||
_HalpDispatchV86Opcode@0:
|
|
||||||
|
|
||||||
/* Make space for the HAL BIOS Frame on the stack */
|
|
||||||
push ebp
|
|
||||||
mov ebp, esp
|
|
||||||
sub esp, HALP_BIOS_FRAME_LENGTH
|
|
||||||
|
|
||||||
/* Save non-volatiles */
|
|
||||||
push esi
|
|
||||||
push edi
|
|
||||||
|
|
||||||
/* Save pointer to the trap frame */
|
|
||||||
mov esi, [ebp]
|
|
||||||
mov [ebp-HALP_BIOS_FRAME_LENGTH+HALP_BIOS_FRAME_TRAP_FRAME], esi
|
|
||||||
|
|
||||||
/* Save SS */
|
|
||||||
movzx eax, word ptr [esi+KTRAP_FRAME_SS]
|
|
||||||
mov [ebp-HALP_BIOS_FRAME_LENGTH+HALP_BIOS_FRAME_SS], eax
|
|
||||||
|
|
||||||
/* Save ESP */
|
|
||||||
mov eax, [esi+KTRAP_FRAME_ESP]
|
|
||||||
mov [ebp-HALP_BIOS_FRAME_LENGTH+HALP_BIOS_FRAME_ESP], eax
|
|
||||||
|
|
||||||
/* Save EFLAGS */
|
|
||||||
mov eax, [esi+KTRAP_FRAME_EFLAGS]
|
|
||||||
mov [ebp-HALP_BIOS_FRAME_LENGTH+HALP_BIOS_FRAME_EFLAGS], eax
|
|
||||||
|
|
||||||
/* Save CS */
|
|
||||||
movzx eax, word ptr [esi+KTRAP_FRAME_CS]
|
|
||||||
mov [ebp-HALP_BIOS_FRAME_LENGTH+HALP_BIOS_FRAME_CS], eax
|
|
||||||
|
|
||||||
/* Save EIP */
|
|
||||||
mov eax, [esi+KTRAP_FRAME_EIP]
|
|
||||||
mov [ebp-HALP_BIOS_FRAME_LENGTH+HALP_BIOS_FRAME_EIP], eax
|
|
||||||
|
|
||||||
/* No prefix */
|
|
||||||
xor eax, eax
|
|
||||||
mov [ebp-HALP_BIOS_FRAME_LENGTH+HALP_BIOS_FRAME_PREFIX], eax
|
|
||||||
|
|
||||||
/* Set pointer to HAL BIOS Frame */
|
|
||||||
lea esi, [ebp-HALP_BIOS_FRAME_LENGTH]
|
|
||||||
|
|
||||||
/* Convert CS to linear format */
|
|
||||||
mov eax, [esi+HALP_BIOS_FRAME_CS]
|
|
||||||
shl eax, 4
|
|
||||||
mov [esi+HALP_BIOS_FRAME_CS_BASE], eax
|
|
||||||
mov dword ptr [esi+HALP_BIOS_FRAME_CS_LIMIT], 0xFFFF
|
|
||||||
mov dword ptr [esi+HALP_BIOS_FRAME_CS_FLAGS], 0
|
|
||||||
|
|
||||||
/* Make sure IP is within the CS Limit */
|
|
||||||
mov edi, [esi+HALP_BIOS_FRAME_EIP]
|
|
||||||
cmp edi, [esi+HALP_BIOS_FRAME_CS_LIMIT]
|
|
||||||
ja DispatchError
|
|
||||||
|
|
||||||
/* Convert IP to linear address and read the opcode */
|
|
||||||
add edi, [esi+HALP_BIOS_FRAME_CS_BASE]
|
|
||||||
mov dl, [edi]
|
|
||||||
|
|
||||||
/* We only deal with interrupts */
|
|
||||||
cmp dl, 0xCD
|
|
||||||
je DispatchInt
|
|
||||||
|
|
||||||
/* Anything else is invalid */
|
|
||||||
call _HalpOpcodeInvalid@0
|
|
||||||
jmp DispatchError
|
|
||||||
|
|
||||||
DispatchInt:
|
|
||||||
/* Handle dispatching the interrupt */
|
|
||||||
call _HalpOpcodeINTnn@0
|
|
||||||
test eax, 0xFFFF
|
|
||||||
jz DispatchReturn
|
|
||||||
|
|
||||||
/* Update the trap frame EIP */
|
|
||||||
mov edi, [ebp-0x20]
|
|
||||||
mov eax, [ebp-0x24]
|
|
||||||
mov [edi+KTRAP_FRAME_EIP], eax
|
|
||||||
|
|
||||||
/* Set success code */
|
|
||||||
mov eax, 1
|
|
||||||
|
|
||||||
DispatchReturn:
|
|
||||||
/* Restore registers and return */
|
|
||||||
pop edi
|
|
||||||
pop esi
|
|
||||||
mov esp, ebp
|
|
||||||
pop ebp
|
|
||||||
ret 0
|
|
||||||
|
|
||||||
DispatchError:
|
|
||||||
/* Set failure code and return */
|
|
||||||
xor eax, eax
|
|
||||||
jmp DispatchReturn
|
|
||||||
.endfunc
|
|
||||||
|
|
||||||
.func Ki16BitStackException
|
|
||||||
_Ki16BitStackException:
|
|
||||||
|
|
||||||
/* Save stack */
|
|
||||||
push ss
|
|
||||||
push esp
|
|
||||||
|
|
||||||
/* Go to kernel mode thread stack */
|
|
||||||
mov eax, PCR[KPCR_CURRENT_THREAD]
|
|
||||||
add esp, [eax+KTHREAD_INITIAL_STACK]
|
|
||||||
|
|
||||||
/* Switch to good stack segment */
|
|
||||||
UNHANDLED_PATH "16-Bit Stack"
|
|
||||||
.endfunc
|
|
||||||
|
|
||||||
.globl _HalpTrap0D@0
|
|
||||||
.func HalpTrap0D@0
|
|
||||||
TRAP_FIXUPS htd_a, htd_t, DoFixupV86, DoFixupAbios
|
|
||||||
_HalpTrap0D@0:
|
|
||||||
|
|
||||||
/* Enter trap */
|
|
||||||
TRAP_PROLOG htd_a, htd_t
|
|
||||||
|
|
||||||
/* Check if this is a V86 trap */
|
|
||||||
test dword ptr [ebp+KTRAP_FRAME_EFLAGS], EFLAGS_V86_MASK
|
|
||||||
jnz DoDispatch
|
|
||||||
|
|
||||||
/* This is weird -- but might happen during an NMI */
|
|
||||||
push offset _InvalidGpfMsg
|
|
||||||
call _DbgPrint
|
|
||||||
add esp, 4
|
|
||||||
|
|
||||||
/* Loop forever */
|
|
||||||
jmp $
|
|
||||||
|
|
||||||
DoDispatch:
|
|
||||||
/* Handle the opcode */
|
|
||||||
call _HalpDispatchV86Opcode@0
|
|
||||||
|
|
||||||
/* Exit the interrupt */
|
|
||||||
jmp _Kei386EoiHelper@0
|
|
||||||
.endfunc
|
|
||||||
|
|
||||||
.globl _HalpTrap06@0
|
|
||||||
.func HalpTrap06@0
|
|
||||||
_HalpTrap06@0:
|
|
||||||
|
|
||||||
/* Restore DS/ES segments */
|
|
||||||
mov eax, KGDT_R3_DATA | RPL_MASK
|
|
||||||
mov ds, ax
|
|
||||||
mov es, ax
|
|
||||||
|
|
||||||
/* Restore ESP and return */
|
|
||||||
mov esp, _HalpSavedEsp
|
|
||||||
ret 0
|
|
||||||
.endfunc
|
|
|
@ -267,3 +267,59 @@ KeFlushWriteBuffer(VOID)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _M_IX86
|
||||||
|
/* x86 fastcall wrappers */
|
||||||
|
|
||||||
|
#undef KeRaiseIrql
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeRaiseIrql(KIRQL NewIrql,
|
||||||
|
PKIRQL OldIrql)
|
||||||
|
{
|
||||||
|
/* Call the fastcall function */
|
||||||
|
*OldIrql = KfRaiseIrql(NewIrql);
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef KeLowerIrql
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeLowerIrql(KIRQL NewIrql)
|
||||||
|
{
|
||||||
|
/* Call the fastcall function */
|
||||||
|
KfLowerIrql(NewIrql);
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef KeAcquireSpinLock
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeAcquireSpinLock(PKSPIN_LOCK SpinLock,
|
||||||
|
PKIRQL OldIrql)
|
||||||
|
{
|
||||||
|
/* Call the fastcall function */
|
||||||
|
*OldIrql = KfAcquireSpinLock(SpinLock);
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef KeReleaseSpinLock
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
NTAPI
|
||||||
|
KeReleaseSpinLock(PKSPIN_LOCK SpinLock,
|
||||||
|
KIRQL NewIrql)
|
||||||
|
{
|
||||||
|
/* Call the fastcall function */
|
||||||
|
KfReleaseSpinLock(SpinLock, NewIrql);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -4,13 +4,11 @@
|
||||||
* FILE: hal/halx86/up/spinlock.c
|
* FILE: hal/halx86/up/spinlock.c
|
||||||
* PURPOSE: Spinlock and Queued Spinlock Support
|
* PURPOSE: Spinlock and Queued Spinlock Support
|
||||||
* PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
|
* PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
|
||||||
* Timo Kreuzer (timo.kreuzer@reactos.org)
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* INCLUDES ******************************************************************/
|
/* INCLUDES ******************************************************************/
|
||||||
|
|
||||||
/* Enable this (and the define in irq.S) to make UP HAL work for MP Kernel */
|
/* This file is compiled twice. Once for UP and once for MP */
|
||||||
/* #define CONFIG_SMP */
|
|
||||||
|
|
||||||
#include <hal.h>
|
#include <hal.h>
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
|
@ -30,18 +28,6 @@ KSPIN_LOCK HalpSystemHardwareLock;
|
||||||
|
|
||||||
#ifdef _M_IX86
|
#ifdef _M_IX86
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
NTAPI
|
|
||||||
KeAcquireSpinLock(PKSPIN_LOCK SpinLock,
|
|
||||||
PKIRQL OldIrql)
|
|
||||||
{
|
|
||||||
/* Call the fastcall function */
|
|
||||||
*OldIrql = KfAcquireSpinLock(SpinLock);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -59,18 +45,6 @@ KeAcquireSpinLockRaiseToSynch(PKSPIN_LOCK SpinLock)
|
||||||
return OldIrql;
|
return OldIrql;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
NTAPI
|
|
||||||
KeReleaseSpinLock(PKSPIN_LOCK SpinLock,
|
|
||||||
KIRQL NewIrql)
|
|
||||||
{
|
|
||||||
/* Call the fastcall function */
|
|
||||||
KfReleaseSpinLock(SpinLock, NewIrql);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -238,31 +212,6 @@ KeTryToAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef KeRaiseIrql
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
NTAPI
|
|
||||||
KeRaiseIrql(KIRQL NewIrql,
|
|
||||||
PKIRQL OldIrql)
|
|
||||||
{
|
|
||||||
/* Call the fastcall function */
|
|
||||||
*OldIrql = KfRaiseIrql(NewIrql);
|
|
||||||
}
|
|
||||||
|
|
||||||
#undef KeLowerIrql
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
NTAPI
|
|
||||||
KeLowerIrql(KIRQL NewIrql)
|
|
||||||
{
|
|
||||||
/* Call the fastcall function */
|
|
||||||
KfLowerIrql(NewIrql);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
|
|
@ -17,20 +17,26 @@
|
||||||
</directory>
|
</directory>
|
||||||
<file>beep.c</file>
|
<file>beep.c</file>
|
||||||
<file>cmos.c</file>
|
<file>cmos.c</file>
|
||||||
|
<file>display.c</file>
|
||||||
<file>dma.c</file>
|
<file>dma.c</file>
|
||||||
<file>drive.c</file>
|
<file>drive.c</file>
|
||||||
<file>display.c</file>
|
<file>halinit.c</file>
|
||||||
|
<file>misc.c</file>
|
||||||
<file>profil.c</file>
|
<file>profil.c</file>
|
||||||
<file>reboot.c</file>
|
<file>reboot.c</file>
|
||||||
<file>sysinfo.c</file>
|
<file>sysinfo.c</file>
|
||||||
<file>timer.c</file>
|
<file>timer.c</file>
|
||||||
|
<file>usage.c</file>
|
||||||
|
<if property="ARCH" value="i386">
|
||||||
|
<directory name="i386">
|
||||||
|
<file>portio.c</file>
|
||||||
|
<file>systimer.S</file>
|
||||||
<if property="ARCH" value="i386">
|
<if property="ARCH" value="i386">
|
||||||
<file>bios.c</file>
|
<file>bios.c</file>
|
||||||
<file>halinit.c</file>
|
<file>halinit.c</file>
|
||||||
<file>misc.c</file>
|
<file>misc.c</file>
|
||||||
<file>pic.c</file>
|
<file>pic.c</file>
|
||||||
<file>trap.S</file>
|
<file>trap.S</file>
|
||||||
<file>usage.c</file>
|
|
||||||
<directory name="i386">
|
<directory name="i386">
|
||||||
<file>portio.c</file>
|
<file>portio.c</file>
|
||||||
<file>systimer.S</file>
|
<file>systimer.S</file>
|
||||||
|
@ -57,6 +63,7 @@
|
||||||
<pch>hal.h</pch>
|
<pch>hal.h</pch>
|
||||||
</directory>
|
</directory>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module name="mini_hal" type="objectlibrary">
|
<module name="mini_hal" type="objectlibrary">
|
||||||
<include>include</include>
|
<include>include</include>
|
||||||
<include base="ntoskrnl">include</include>
|
<include base="ntoskrnl">include</include>
|
||||||
|
@ -78,6 +85,7 @@
|
||||||
<file>dma.c</file>
|
<file>dma.c</file>
|
||||||
<file>display.c</file>
|
<file>display.c</file>
|
||||||
<file>drive.c</file>
|
<file>drive.c</file>
|
||||||
|
<file>misc.c</file>
|
||||||
<file>profil.c</file>
|
<file>profil.c</file>
|
||||||
<file>reboot.c</file>
|
<file>reboot.c</file>
|
||||||
<file>spinlock.c</file>
|
<file>spinlock.c</file>
|
||||||
|
@ -85,15 +93,9 @@
|
||||||
<file>timer.c</file>
|
<file>timer.c</file>
|
||||||
<file>usage.c</file>
|
<file>usage.c</file>
|
||||||
<if property="ARCH" value="i386">
|
<if property="ARCH" value="i386">
|
||||||
<file>bios.c</file>
|
|
||||||
<file>misc.c</file>
|
|
||||||
<file>pic.c</file>
|
|
||||||
<file>trap.S</file>
|
|
||||||
<file>usage.c</file>
|
|
||||||
<directory name="i386">
|
<directory name="i386">
|
||||||
<file>portio.c</file>
|
<file>portio.c</file>
|
||||||
<file>systimer.S</file>
|
<file>systimer.S</file>
|
||||||
<file>v86.s</file>
|
|
||||||
</directory>
|
</directory>
|
||||||
</if>
|
</if>
|
||||||
<if property="ARCH" value="amd64">
|
<if property="ARCH" value="amd64">
|
||||||
|
@ -109,6 +111,8 @@
|
||||||
</directory>
|
</directory>
|
||||||
<directory name="up">
|
<directory name="up">
|
||||||
<file>halinit_up.c</file>
|
<file>halinit_up.c</file>
|
||||||
|
<file>pic.c</file>
|
||||||
|
<file>processor.c</file>
|
||||||
</directory>
|
</directory>
|
||||||
</module>
|
</module>
|
||||||
</group>
|
</group>
|
||||||
|
|
|
@ -9,6 +9,10 @@
|
||||||
<directory name="generic">
|
<directory name="generic">
|
||||||
<file>spinlock.c</file>
|
<file>spinlock.c</file>
|
||||||
</directory>
|
</directory>
|
||||||
|
<directory name="up">
|
||||||
|
<file>pic.c</file>
|
||||||
|
<file>processor.c</file>
|
||||||
|
</directory>
|
||||||
<directory name="up">
|
<directory name="up">
|
||||||
<file>processor.c</file>
|
<file>processor.c</file>
|
||||||
<if property="ARCH" value="i386">
|
<if property="ARCH" value="i386">
|
||||||
|
|
|
@ -6,31 +6,22 @@
|
||||||
<bootstrap installbase="$(CDOUTPUT)" nameoncd="hal.dll" />
|
<bootstrap installbase="$(CDOUTPUT)" nameoncd="hal.dll" />
|
||||||
<include base="hal">include</include>
|
<include base="hal">include</include>
|
||||||
<include base="ntoskrnl">include</include>
|
<include base="ntoskrnl">include</include>
|
||||||
<include base="x86emu">.</include>
|
<!-- include base="x86emu">.</include -->
|
||||||
<define name="_DISABLE_TIDENTS" />
|
<define name="_DISABLE_TIDENTS" />
|
||||||
<define name="_NTHAL_" />
|
<define name="_NTHAL_" />
|
||||||
<define name="_X86BIOS_" />
|
<define name="_X86BIOS_" />
|
||||||
<library>hal_generic</library>
|
<library>hal_generic</library>
|
||||||
<library>hal_generic_up</library>
|
<library>hal_generic_up</library>
|
||||||
<library>ntoskrnl</library>
|
<library>ntoskrnl</library>
|
||||||
<library>x86emu</library>
|
<!-- library>x86emu</library -->
|
||||||
|
|
||||||
<directory name="up">
|
|
||||||
<file>halinit_up.c</file>
|
|
||||||
<file>halup.rc</file>
|
|
||||||
</directory>
|
|
||||||
|
|
||||||
<directory name="mp">
|
<directory name="mp">
|
||||||
|
<file>halinit_mp.c</file>
|
||||||
|
<file>halmp.rc</file>
|
||||||
<directory name="amd64">
|
<directory name="amd64">
|
||||||
<file>mps.S</file>
|
<!-- file>mps.S</file -->
|
||||||
</directory>
|
</directory>
|
||||||
</directory>
|
</directory>
|
||||||
<directory name="generic">
|
|
||||||
<directory name="amd64">
|
|
||||||
<file>x86bios.c</file>
|
|
||||||
</directory>
|
|
||||||
</directory>
|
|
||||||
|
|
||||||
</module>
|
</module>
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
|
|
|
@ -14,11 +14,13 @@
|
||||||
<library>ntoskrnl</library>
|
<library>ntoskrnl</library>
|
||||||
<library>libcntpr</library>
|
<library>libcntpr</library>
|
||||||
<directory name="mp">
|
<directory name="mp">
|
||||||
<file>mpsirql.c</file>
|
<if property="ARCH" value="i386">
|
||||||
<directory name="i386">
|
<directory name="i386">
|
||||||
<file>mps.S</file>
|
<file>mps.S</file>
|
||||||
<file>mpsboot.asm</file>
|
<file>mpsboot.asm</file>
|
||||||
</directory>
|
<file>mpsirql.c</file>
|
||||||
|
</directory>
|
||||||
|
</if>
|
||||||
</directory>
|
</directory>
|
||||||
</module>
|
</module>
|
||||||
</group>
|
</group>
|
||||||
|
|
|
@ -685,6 +685,15 @@ VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
HalpSetInterruptGate(ULONG Index, PVOID Address);
|
HalpSetInterruptGate(ULONG Index, PVOID Address);
|
||||||
|
|
||||||
|
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
KeUpdateSystemTime(
|
||||||
|
IN PKTRAP_FRAME TrapFrame,
|
||||||
|
IN ULONG Increment,
|
||||||
|
IN KIRQL OldIrql
|
||||||
|
);
|
||||||
|
|
||||||
#ifdef _M_AMD64
|
#ifdef _M_AMD64
|
||||||
#define KfLowerIrql KeLowerIrql
|
#define KfLowerIrql KeLowerIrql
|
||||||
#ifndef CONFIG_SMP
|
#ifndef CONFIG_SMP
|
||||||
|
|
|
@ -143,6 +143,7 @@ KfLowerIrql (KIRQL NewIrql)
|
||||||
HalpLowerIrql (NewIrql, FALSE);
|
HalpLowerIrql (NewIrql, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* NAME EXPORTED
|
* NAME EXPORTED
|
||||||
* KfRaiseIrql
|
* KfRaiseIrql
|
||||||
|
@ -191,7 +192,6 @@ KfRaiseIrql (KIRQL NewIrql)
|
||||||
return OldIrql;
|
return OldIrql;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* NAME EXPORTED
|
* NAME EXPORTED
|
||||||
* KeRaiseIrqlToDpcLevel
|
* KeRaiseIrqlToDpcLevel
|
|
@ -159,7 +159,7 @@ typedef ACPI_ENUM_CHILDREN_OUTPUT_BUFFER UNALIGNED *PACPI_ENUM_CHILDREN_OUTPUT_B
|
||||||
|
|
||||||
#define ACPI_METHOD_SET_ARGUMENT_STRING( Argument, StrData ) \
|
#define ACPI_METHOD_SET_ARGUMENT_STRING( Argument, StrData ) \
|
||||||
{ Argument->Type = ACPI_METHOD_ARGUMENT_STRING; \
|
{ Argument->Type = ACPI_METHOD_ARGUMENT_STRING; \
|
||||||
Argument->DataLength = strlen((PUCHAR)StrData) + sizeof(UCHAR); \
|
Argument->DataLength = strlen((PCHAR)StrData) + sizeof(UCHAR); \
|
||||||
RtlCopyMemory(&Argument->Data[0],(PUCHAR)StrData,Argument->DataLength); }
|
RtlCopyMemory(&Argument->Data[0],(PUCHAR)StrData,Argument->DataLength); }
|
||||||
|
|
||||||
#define ACPI_METHOD_SET_ARGUMENT_BUFFER( Argument, BuffData, BuffLength ) \
|
#define ACPI_METHOD_SET_ARGUMENT_BUFFER( Argument, BuffData, BuffLength ) \
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
|
|
||||||
/* $Id: $
|
|
||||||
*
|
|
||||||
* COPYRIGHT: This file is in the public domain.
|
|
||||||
* PROJECT: ReactOS kernel
|
|
||||||
* FILE:
|
|
||||||
* PURPOSE: headers
|
|
||||||
* PROGRAMMER: Magnus Olsen (greatlrd)
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined(_ATSCMEDIA_)
|
|
||||||
#define _ATSCMEDIA_
|
|
||||||
#define BDANETWORKTYPE_ATSC DEFINE_GUIDNAMED(BDANETWORKTYPE_ATSC)
|
|
||||||
#define STATIC_BDANETWORKTYPE_ATSC 0x71985F51, 0x1CA1, 0x11D3, 0x9C, 0xC8, 0x0, 0xC0, 0x4F, 0x79, 0x71, 0xE0
|
|
||||||
DEFINE_GUIDSTRUCT("71985F51-1CA1-11D3-9CC8-00C04F7971E0", BDANETWORKTYPE_ATSC);
|
|
||||||
#endif
|
|
File diff suppressed because it is too large
Load diff
1074
reactos/include/ddk/mce.h
Normal file
1074
reactos/include/ddk/mce.h
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,10 +0,0 @@
|
||||||
|
|
||||||
#ifndef __XMLDSODID_H__
|
|
||||||
#define __XMLDSODID_H__
|
|
||||||
#define DISPID_XOBJ_MIN 0x00010000
|
|
||||||
#define DISPID_XOBJ_MAX 0x0001FFFF
|
|
||||||
#define DISPID_XOBJ_BASE DISPID_XOBJ_MIN
|
|
||||||
#define DISPID_XMLDSO DISPID_XOBJ_BASE
|
|
||||||
#define DISPID_XMLDSO_DOCUMENT DISPID_XMLDSO + 1
|
|
||||||
#define DISPID_XMLDSO_JAVADSOCOMPATIBLE DISPID_XMLDSO_DOCUMENT + 1
|
|
||||||
#endif
|
|
270
reactos/include/dxsdk/bdatif.idl
Normal file
270
reactos/include/dxsdk/bdatif.idl
Normal file
|
@ -0,0 +1,270 @@
|
||||||
|
#ifndef DO_NO_IMPORTS
|
||||||
|
import "unknwn.idl";
|
||||||
|
import "strmif.idl";
|
||||||
|
import "tuner.idl";
|
||||||
|
import "bdaiface.idl";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
interface IMPEG2_TIF_CONTROL;
|
||||||
|
interface IATSCChannelInfo;
|
||||||
|
interface IMPEG2PIDMap;
|
||||||
|
|
||||||
|
[
|
||||||
|
object,
|
||||||
|
uuid(DFEF4A68-EE61-415f-9CCB-CD95F2F98A3A),
|
||||||
|
pointer_default(unique)
|
||||||
|
]
|
||||||
|
interface IBDA_TIF_REGISTRATION : IUnknown
|
||||||
|
{
|
||||||
|
HRESULT
|
||||||
|
RegisterTIFEx(
|
||||||
|
[in] IPin * pTIFInputPin,
|
||||||
|
[in, out] ULONG * ppvRegistrationContext,
|
||||||
|
[in, out] IUnknown ** ppMpeg2DataControl);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
UnregisterTIF(
|
||||||
|
[in] ULONG pvRegistrationContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
object,
|
||||||
|
uuid(F9BAC2F9-4149-4916-B2EF-FAA202326862),
|
||||||
|
pointer_default(unique)
|
||||||
|
]
|
||||||
|
interface IMPEG2_TIF_CONTROL : IUnknown
|
||||||
|
{
|
||||||
|
HRESULT
|
||||||
|
RegisterTIF(
|
||||||
|
[in] IUnknown * pUnkTIF,
|
||||||
|
[in, out] ULONG * ppvRegistrationContext);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
UnregisterTIF(
|
||||||
|
[in] ULONG pvRegistrationContext);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
AddPIDs(
|
||||||
|
[in] ULONG ulcPIDs,
|
||||||
|
[in] ULONG * pulPIDs);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
DeletePIDs(
|
||||||
|
[in] ULONG ulcPIDs,
|
||||||
|
[in] ULONG * pulPIDs);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
GetPIDCount(
|
||||||
|
[out] ULONG * pulcPIDs);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
GetPIDs(
|
||||||
|
[out] ULONG * pulcPIDs,
|
||||||
|
[out] ULONG * pulPIDs);
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
object,
|
||||||
|
uuid(A3B152DF-7A90-4218-AC54-9830BEE8C0B6),
|
||||||
|
pointer_default(unique)
|
||||||
|
]
|
||||||
|
interface ITuneRequestInfo : IUnknown
|
||||||
|
{
|
||||||
|
HRESULT
|
||||||
|
GetLocatorData(
|
||||||
|
[in] ITuneRequest *Request);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
GetComponentData(
|
||||||
|
[in] ITuneRequest *CurrentRequest);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
CreateComponentList(
|
||||||
|
[in] ITuneRequest *CurrentRequest);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
GetNextProgram (
|
||||||
|
[in] ITuneRequest *CurrentRequest,
|
||||||
|
[out, retval] ITuneRequest **TuneRequest);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
GetPreviousProgram(
|
||||||
|
[in] ITuneRequest *CurrentRequest,
|
||||||
|
[out, retval] ITuneRequest **TuneRequest);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
GetNextLocator(
|
||||||
|
[in] ITuneRequest *CurrentRequest,
|
||||||
|
[out, retval] ITuneRequest **TuneRequest);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
GetPreviousLocator(
|
||||||
|
[in] ITuneRequest *CurrentRequest,
|
||||||
|
[out, retval] ITuneRequest **TuneRequest);
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
object,
|
||||||
|
uuid(EFDA0C80-F395-42c3-9B3C-56B37DEC7BB7),
|
||||||
|
pointer_default(unique)
|
||||||
|
]
|
||||||
|
interface IGuideDataEvent : IUnknown
|
||||||
|
{
|
||||||
|
HRESULT
|
||||||
|
GuideDataAcquired();
|
||||||
|
|
||||||
|
HRESULT ProgramChanged(
|
||||||
|
[in] VARIANT varProgramDescriptionID);
|
||||||
|
|
||||||
|
HRESULT ServiceChanged(
|
||||||
|
[in] VARIANT varServiceDescriptionID);
|
||||||
|
|
||||||
|
HRESULT ScheduleEntryChanged(
|
||||||
|
[in] VARIANT varScheduleEntryDescriptionID);
|
||||||
|
|
||||||
|
HRESULT ProgramDeleted(
|
||||||
|
[in] VARIANT varProgramDescriptionID);
|
||||||
|
|
||||||
|
HRESULT ServiceDeleted(
|
||||||
|
[in] VARIANT varServiceDescriptionID);
|
||||||
|
|
||||||
|
HRESULT ScheduleDeleted(
|
||||||
|
[in] VARIANT varScheduleEntryDescriptionID);
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
object,
|
||||||
|
uuid(88EC5E58-BB73-41d6-99CE-66C524B8B591),
|
||||||
|
pointer_default(unique)
|
||||||
|
]
|
||||||
|
interface IGuideDataProperty : IUnknown
|
||||||
|
{
|
||||||
|
HRESULT
|
||||||
|
get_Name(
|
||||||
|
[out] BSTR *pbstrName);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
get_Language(
|
||||||
|
[out] long *idLang);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
get_Value(
|
||||||
|
[out] VARIANT *pvar);
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
object,
|
||||||
|
uuid(AE44423B-4571-475c-AD2C-F40A771D80EF),
|
||||||
|
pointer_default(unique)
|
||||||
|
]
|
||||||
|
interface IEnumGuideDataProperties : IUnknown
|
||||||
|
{
|
||||||
|
HRESULT
|
||||||
|
Next(
|
||||||
|
[in] unsigned long celt,
|
||||||
|
[out] IGuideDataProperty **ppprop,
|
||||||
|
[out] unsigned long *pcelt);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
Skip(
|
||||||
|
[in] unsigned long celt);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
Clone(
|
||||||
|
[out] IEnumGuideDataProperties **ppenum);
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
object,
|
||||||
|
uuid(1993299C-CED6-4788-87A3-420067DCE0C7),
|
||||||
|
pointer_default(unique)
|
||||||
|
]
|
||||||
|
interface IEnumTuneRequests : IUnknown
|
||||||
|
{
|
||||||
|
HRESULT
|
||||||
|
Next(
|
||||||
|
[in] unsigned long celt,
|
||||||
|
[out] ITuneRequest **ppprop,
|
||||||
|
[out] unsigned long *pcelt);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
Skip(
|
||||||
|
[in] unsigned long celt);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
Clone(
|
||||||
|
[out] IEnumTuneRequests **ppenum);
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
object,
|
||||||
|
uuid(61571138-5B01-43cd-AEAF-60B784A0BF93),
|
||||||
|
pointer_default(unique)
|
||||||
|
]
|
||||||
|
interface IGuideData : IUnknown
|
||||||
|
{
|
||||||
|
HRESULT
|
||||||
|
GetServices(
|
||||||
|
[out, retval] IEnumTuneRequests ** ppEnumTuneRequests);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
GetServiceProperties(
|
||||||
|
[in] ITuneRequest * pTuneRequest,
|
||||||
|
[out, retval] IEnumGuideDataProperties ** ppEnumProperties);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
GetGuideProgramIDs(
|
||||||
|
[out, retval] IEnumVARIANT ** pEnumPrograms);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
GetProgramProperties(
|
||||||
|
[in] VARIANT varProgramDescriptionID,
|
||||||
|
[out, retval] IEnumGuideDataProperties ** ppEnumProperties);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
GetScheduleEntryIDs(
|
||||||
|
[out, retval] IEnumVARIANT ** pEnumScheduleEntries);
|
||||||
|
|
||||||
|
HRESULT
|
||||||
|
GetScheduleEntryProperties(
|
||||||
|
[in] VARIANT varScheduleEntryDescriptionID,
|
||||||
|
[out, retval] IEnumGuideDataProperties ** ppEnumProperties);
|
||||||
|
}
|
||||||
|
|
||||||
|
[
|
||||||
|
object,
|
||||||
|
uuid(4764ff7c-fa95-4525-af4d-d32236db9e38),
|
||||||
|
pointer_default(unique)
|
||||||
|
]
|
||||||
|
interface IGuideDataLoader : IUnknown
|
||||||
|
{
|
||||||
|
HRESULT Init([in] IGuideData *pGuideStore);
|
||||||
|
HRESULT Terminate();
|
||||||
|
};
|
||||||
|
|
||||||
|
[
|
||||||
|
uuid(8224A083-7F8C-432D-B83E-3C5E9BDE3528),
|
||||||
|
version(1.0),
|
||||||
|
]
|
||||||
|
library PSISLOADLib
|
||||||
|
{
|
||||||
|
importlib("stdole32.tlb");
|
||||||
|
importlib("stdole2.tlb");
|
||||||
|
|
||||||
|
[
|
||||||
|
uuid(14EB8748-1753-4393-95AE-4F7E7A87AAD6),
|
||||||
|
helpstring("TIFLoad Class")
|
||||||
|
]
|
||||||
|
coclass TIFLoad
|
||||||
|
{
|
||||||
|
interface IGuideDataLoader;
|
||||||
|
interface IGuideDataEvent;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
<module name="dxsdk" type="idlheader">
|
<module name="dxsdk" type="idlheader">
|
||||||
<file>amstream.idl</file>
|
<file>amstream.idl</file>
|
||||||
<file>austream.idl</file>
|
<file>austream.idl</file>
|
||||||
|
<file>bdatif.idl</file>
|
||||||
<file>ddstream.idl</file>
|
<file>ddstream.idl</file>
|
||||||
<file>dmodshow.idl</file>
|
<file>dmodshow.idl</file>
|
||||||
<file>mixerocx.idl</file>
|
<file>mixerocx.idl</file>
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
#define PASTE2(x,y) x##y
|
#define PASTE2(x,y) x##y
|
||||||
#define PASTE(x,y) PASTE2(x,y)
|
#define PASTE(x,y) PASTE2(x,y)
|
||||||
|
|
||||||
|
|
|
@ -703,7 +703,7 @@ typedef struct _PROCESS_BASIC_INFORMATION
|
||||||
KPRIORITY BasePriority;
|
KPRIORITY BasePriority;
|
||||||
ULONG_PTR UniqueProcessId;
|
ULONG_PTR UniqueProcessId;
|
||||||
ULONG_PTR InheritedFromUniqueProcessId;
|
ULONG_PTR InheritedFromUniqueProcessId;
|
||||||
} PROCESS_BASIC_INFORMATION,*PPROCESS_BASIC_INFORMATION;
|
} PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
|
||||||
|
|
||||||
typedef struct _PROCESS_ACCESS_TOKEN
|
typedef struct _PROCESS_ACCESS_TOKEN
|
||||||
{
|
{
|
||||||
|
|
7
reactos/include/psdk/atsmedia.h
Normal file
7
reactos/include/psdk/atsmedia.h
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#define BDANETWORKTYPE_ATSC DEFINE_GUIDNAMED(BDANETWORKTYPE_ATSC)
|
||||||
|
|
||||||
|
#define STATIC_BDANETWORKTYPE_ATSC 0x71985F51, 0x1CA1, 0x11D3, 0x9C, 0xC8, 0x0, 0xC0, 0x4F, 0x79, 0x71, 0xE0
|
||||||
|
|
||||||
|
DEFINE_GUIDSTRUCT("71985F51-1CA1-11D3-9CC8-00C04F7971E0", BDANETWORKTYPE_ATSC);
|
|
@ -180,11 +180,11 @@ typedef struct _BATTERY_WAIT_STATUS {
|
||||||
|
|
||||||
|
|
||||||
typedef NTSTATUS
|
typedef NTSTATUS
|
||||||
(DDKAPI*BCLASS_DISABLE_STATUS_NOTIFY)(
|
(NTAPI *BCLASS_DISABLE_STATUS_NOTIFY)(
|
||||||
IN PVOID Context);
|
IN PVOID Context);
|
||||||
|
|
||||||
typedef NTSTATUS
|
typedef NTSTATUS
|
||||||
(DDKAPI*BCLASS_QUERY_INFORMATION)(
|
(NTAPI *BCLASS_QUERY_INFORMATION)(
|
||||||
IN PVOID Context,
|
IN PVOID Context,
|
||||||
IN ULONG BatteryTag,
|
IN ULONG BatteryTag,
|
||||||
IN BATTERY_QUERY_INFORMATION_LEVEL Level,
|
IN BATTERY_QUERY_INFORMATION_LEVEL Level,
|
||||||
|
@ -194,25 +194,25 @@ typedef NTSTATUS
|
||||||
OUT PULONG ReturnedLength);
|
OUT PULONG ReturnedLength);
|
||||||
|
|
||||||
typedef NTSTATUS
|
typedef NTSTATUS
|
||||||
(DDKAPI*BCLASS_QUERY_STATUS)(
|
(NTAPI *BCLASS_QUERY_STATUS)(
|
||||||
IN PVOID Context,
|
IN PVOID Context,
|
||||||
IN ULONG BatteryTag,
|
IN ULONG BatteryTag,
|
||||||
OUT PBATTERY_STATUS BatteryStatus);
|
OUT PBATTERY_STATUS BatteryStatus);
|
||||||
|
|
||||||
typedef NTSTATUS
|
typedef NTSTATUS
|
||||||
(DDKAPI*BCLASS_QUERY_TAG)(
|
(NTAPI *BCLASS_QUERY_TAG)(
|
||||||
IN PVOID Context,
|
IN PVOID Context,
|
||||||
OUT PULONG BatteryTag);
|
OUT PULONG BatteryTag);
|
||||||
|
|
||||||
typedef NTSTATUS
|
typedef NTSTATUS
|
||||||
(DDKAPI*BCLASS_SET_INFORMATION)(
|
(NTAPI *BCLASS_SET_INFORMATION)(
|
||||||
IN PVOID Context,
|
IN PVOID Context,
|
||||||
IN ULONG BatteryTag,
|
IN ULONG BatteryTag,
|
||||||
IN BATTERY_SET_INFORMATION_LEVEL Level,
|
IN BATTERY_SET_INFORMATION_LEVEL Level,
|
||||||
IN PVOID Buffer OPTIONAL);
|
IN PVOID Buffer OPTIONAL);
|
||||||
|
|
||||||
typedef NTSTATUS
|
typedef NTSTATUS
|
||||||
(DDKAPI*BCLASS_SET_STATUS_NOTIFY)(
|
(NTAPI *BCLASS_SET_STATUS_NOTIFY)(
|
||||||
IN PVOID Context,
|
IN PVOID Context,
|
||||||
IN ULONG BatteryTag,
|
IN ULONG BatteryTag,
|
||||||
IN PBATTERY_NOTIFY BatteryNotify);
|
IN PBATTERY_NOTIFY BatteryNotify);
|
||||||
|
@ -239,21 +239,21 @@ typedef struct _BATTERY_MINIPORT_INFO {
|
||||||
|
|
||||||
BCLASSAPI
|
BCLASSAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
DDKAPI
|
NTAPI
|
||||||
BatteryClassInitializeDevice(
|
BatteryClassInitializeDevice(
|
||||||
IN PBATTERY_MINIPORT_INFO MiniportInfo,
|
IN PBATTERY_MINIPORT_INFO MiniportInfo,
|
||||||
IN PVOID *ClassData);
|
IN PVOID *ClassData);
|
||||||
|
|
||||||
BCLASSAPI
|
BCLASSAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
DDKAPI
|
NTAPI
|
||||||
BatteryClassIoctl(
|
BatteryClassIoctl(
|
||||||
IN PVOID ClassData,
|
IN PVOID ClassData,
|
||||||
IN PIRP Irp);
|
IN PIRP Irp);
|
||||||
|
|
||||||
BCLASSAPI
|
BCLASSAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
DDKAPI
|
NTAPI
|
||||||
BatteryClassQueryWmiDataBlock(
|
BatteryClassQueryWmiDataBlock(
|
||||||
IN PVOID ClassData,
|
IN PVOID ClassData,
|
||||||
IN PDEVICE_OBJECT DeviceObject,
|
IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
@ -265,13 +265,13 @@ BatteryClassQueryWmiDataBlock(
|
||||||
|
|
||||||
BCLASSAPI
|
BCLASSAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
DDKAPI
|
NTAPI
|
||||||
BatteryClassStatusNotify(
|
BatteryClassStatusNotify(
|
||||||
IN PVOID ClassData);
|
IN PVOID ClassData);
|
||||||
|
|
||||||
BCLASSAPI
|
BCLASSAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
DDKAPI
|
NTAPI
|
||||||
BatteryClassSystemControl(
|
BatteryClassSystemControl(
|
||||||
IN PVOID ClassData,
|
IN PVOID ClassData,
|
||||||
IN PVOID WmiLibContext, /* PWMILIB_CONTEXT */
|
IN PVOID WmiLibContext, /* PWMILIB_CONTEXT */
|
||||||
|
@ -281,7 +281,7 @@ BatteryClassSystemControl(
|
||||||
|
|
||||||
BCLASSAPI
|
BCLASSAPI
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
DDKAPI
|
NTAPI
|
||||||
BatteryClassUnload(
|
BatteryClassUnload(
|
||||||
IN PVOID ClassData);
|
IN PVOID ClassData);
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,8 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _CFG_INCLUDED_
|
#pragma once
|
||||||
|
|
||||||
#define _CFG_INCLUDED_
|
#define _CFG_INCLUDED_
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -77,7 +78,26 @@ extern "C" {
|
||||||
#define CM_PROB_DRIVER_BLOCKED 0x00000030
|
#define CM_PROB_DRIVER_BLOCKED 0x00000030
|
||||||
#define CM_PROB_REGISTRY_TOO_LARGE 0x00000031
|
#define CM_PROB_REGISTRY_TOO_LARGE 0x00000031
|
||||||
#define CM_PROB_SETPROPERTIES_FAILED 0x00000032
|
#define CM_PROB_SETPROPERTIES_FAILED 0x00000032
|
||||||
#define NUM_CM_PROB 0x00000033
|
#define CM_PROB_WAITING_ON_DEPENDENCY 0x00000033
|
||||||
|
#define CM_PROB_UNSIGNED_DRIVER 0x00000034
|
||||||
|
|
||||||
|
#define NUM_CM_PROB_V1 0x00000025
|
||||||
|
#define NUM_CM_PROB_V2 0x00000032
|
||||||
|
#define NUM_CM_PROB_V3 0x00000033
|
||||||
|
#define NUM_CM_PROB_V4 0x00000034
|
||||||
|
#define NUM_CM_PROB_V5 0x00000035
|
||||||
|
|
||||||
|
#if (NTDDI_VERSION >= NTDDI_WIN7)
|
||||||
|
#define NUM_CM_PROB NUM_CM_PROB_V5
|
||||||
|
#elif (NTDDI_VERSION >= NTDDI_WS08)
|
||||||
|
#define NUM_CM_PROB NUM_CM_PROB_V4
|
||||||
|
#elif (NTDDI_VERSION >= NTDDI_WS03)
|
||||||
|
#define NUM_CM_PROB NUM_CM_PROB_V3
|
||||||
|
#elif (NTDDI_VERSION >= NTDDI_WINXP)
|
||||||
|
#define NUM_CM_PROB NUM_CM_PROB_V2
|
||||||
|
#elif (NTDDI_VERSION >= WIN2K)
|
||||||
|
#define NUM_CM_PROB NUM_CM_PROB_V1
|
||||||
|
#endif
|
||||||
|
|
||||||
#define LCPRI_FORCECONFIG 0x00000000
|
#define LCPRI_FORCECONFIG 0x00000000
|
||||||
#define LCPRI_BOOTCONFIG 0x00000001
|
#define LCPRI_BOOTCONFIG 0x00000001
|
||||||
|
@ -95,24 +115,24 @@ extern "C" {
|
||||||
#define LCPRI_DISABLED 0x0000FFFF
|
#define LCPRI_DISABLED 0x0000FFFF
|
||||||
#define MAX_LCPRI 0x0000FFFF
|
#define MAX_LCPRI 0x0000FFFF
|
||||||
|
|
||||||
#define DN_ROOT_ENUMERATED 0x00000001 /* Was enumerated by ROOT */
|
#define DN_ROOT_ENUMERATED 0x00000001 /* Was enumerated by ROOT */
|
||||||
#define DN_DRIVER_LOADED 0x00000002 /* Has Register_Device_Driver */
|
#define DN_DRIVER_LOADED 0x00000002 /* Has Register_Device_Driver */
|
||||||
#define DN_ENUM_LOADED 0x00000004 /* Has Register_Enumerator */
|
#define DN_ENUM_LOADED 0x00000004 /* Has Register_Enumerator */
|
||||||
#define DN_STARTED 0x00000008 /* Is currently configured */
|
#define DN_STARTED 0x00000008 /* Is currently configured */
|
||||||
#define DN_MANUAL 0x00000010 /* Manually installed */
|
#define DN_MANUAL 0x00000010 /* Manually installed */
|
||||||
#define DN_NEED_TO_ENUM 0x00000020 /* May need reenumeration */
|
#define DN_NEED_TO_ENUM 0x00000020 /* May need reenumeration */
|
||||||
#define DN_NOT_FIRST_TIME 0x00000040 /* Has received a config (Win9x only) */
|
#define DN_NOT_FIRST_TIME 0x00000040 /* Has received a config (Win9x only) */
|
||||||
#define DN_HARDWARE_ENUM 0x00000080 /* Enum generates hardware ID */
|
#define DN_HARDWARE_ENUM 0x00000080 /* Enum generates hardware ID */
|
||||||
#define DN_LIAR 0x00000100 /* Lied about can reconfig once (Win9x only) */
|
#define DN_LIAR 0x00000100 /* Lied about can reconfig once (Win9x only) */
|
||||||
#define DN_HAS_MARK 0x00000200 /* Not CM_Create_DevNode lately (Win9x only) */
|
#define DN_HAS_MARK 0x00000200 /* Not CM_Create_DevNode lately (Win9x only) */
|
||||||
#define DN_HAS_PROBLEM 0x00000400 /* Need device installer */
|
#define DN_HAS_PROBLEM 0x00000400 /* Need device installer */
|
||||||
#define DN_FILTERED 0x00000800 /* Is filtered */
|
#define DN_FILTERED 0x00000800 /* Is filtered */
|
||||||
#define DN_MOVED 0x00001000 /* Has been moved (Win9x only) */
|
#define DN_MOVED 0x00001000 /* Has been moved (Win9x only) */
|
||||||
#define DN_DISABLEABLE 0x00002000 /* Can be rebalanced */
|
#define DN_DISABLEABLE 0x00002000 /* Can be rebalanced */
|
||||||
#define DN_REMOVABLE 0x00004000 /* Can be removed */
|
#define DN_REMOVABLE 0x00004000 /* Can be removed */
|
||||||
#define DN_PRIVATE_PROBLEM 0x00008000 /* Has a private problem */
|
#define DN_PRIVATE_PROBLEM 0x00008000 /* Has a private problem */
|
||||||
#define DN_MF_PARENT 0x00010000 /* Multi function parent */
|
#define DN_MF_PARENT 0x00010000 /* Multi function parent */
|
||||||
#define DN_MF_CHILD 0x00020000 /* Multi function child */
|
#define DN_MF_CHILD 0x00020000 /* Multi function child */
|
||||||
#define DN_WILL_BE_REMOVED 0x00040000
|
#define DN_WILL_BE_REMOVED 0x00040000
|
||||||
#define DN_NOT_FIRST_TIMEE 0x00080000
|
#define DN_NOT_FIRST_TIMEE 0x00080000
|
||||||
#define DN_STOP_FREE_RES 0x00100000
|
#define DN_STOP_FREE_RES 0x00100000
|
||||||
|
@ -128,11 +148,33 @@ extern "C" {
|
||||||
#define DN_NO_SHOW_IN_DM 0x40000000
|
#define DN_NO_SHOW_IN_DM 0x40000000
|
||||||
#define DN_BOOT_LOG_PROB 0x80000000
|
#define DN_BOOT_LOG_PROB 0x80000000
|
||||||
|
|
||||||
#define DN_NEED_RESTART DN_LIAR
|
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||||
#define DN_DRIVER_BLOCKED DN_NOT_FIRST_TIME
|
|
||||||
#define DN_LEGACY_DRIVER DN_MOVED
|
#define DN_NEED_RESTART DN_LIAR
|
||||||
|
#define DN_DRIVER_BLOCKED DN_NOT_FIRST_TIME
|
||||||
|
#define DN_LEGACY_DRIVER DN_MOVED
|
||||||
#define DN_CHILD_WITH_INVALID_ID DN_HAS_MARK
|
#define DN_CHILD_WITH_INVALID_ID DN_HAS_MARK
|
||||||
|
|
||||||
|
#elif (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||||
|
|
||||||
|
#define DN_NEED_RESTART 0x00000100
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define DN_CHANGEABLE_FLAGS (DN_NOT_FIRST_TIME + \
|
||||||
|
DN_HARDWARE_ENUM + \
|
||||||
|
DN_HAS_MARK + \
|
||||||
|
DN_DISABLEABLE + \
|
||||||
|
DN_REMOVABLE + \
|
||||||
|
DN_MF_CHILD + \
|
||||||
|
DN_MF_PARENT + \
|
||||||
|
DN_NOT_FIRST_TIMEE + \
|
||||||
|
DN_STOP_FREE_RES + \
|
||||||
|
DN_REBAL_CANDIDATE + \
|
||||||
|
DN_NT_ENUMERATOR + \
|
||||||
|
DN_NT_DRIVER + \
|
||||||
|
DN_SILENT_INSTALL + \
|
||||||
|
DN_NO_SHOW_IN_DM)
|
||||||
|
|
||||||
typedef enum _PNP_VETO_TYPE {
|
typedef enum _PNP_VETO_TYPE {
|
||||||
PNP_VetoTypeUnknown,
|
PNP_VetoTypeUnknown,
|
||||||
|
@ -149,14 +191,7 @@ typedef enum _PNP_VETO_TYPE {
|
||||||
PNP_VetoLegacyDriver
|
PNP_VetoLegacyDriver
|
||||||
} PNP_VETO_TYPE, *PPNP_VETO_TYPE;
|
} PNP_VETO_TYPE, *PPNP_VETO_TYPE;
|
||||||
|
|
||||||
#define CM_GLOBAL_STATE_CAN_DO_UI 0x00000001
|
|
||||||
#define CM_GLOBAL_STATE_ON_BIG_STACK 0x00000002
|
|
||||||
#define CM_GLOBAL_STATE_SERVICES_AVAILABLE 0x00000004
|
|
||||||
#define CM_GLOBAL_STATE_SHUTTING_DOWN 0x00000008
|
|
||||||
#define CM_GLOBAL_STATE_DETECTION_PENDING 0x00000010
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _CFG_INCLUDED_ */
|
|
3206
reactos/include/psdk/cfgmgr32.h
Normal file
3206
reactos/include/psdk/cfgmgr32.h
Normal file
File diff suppressed because it is too large
Load diff
84
reactos/include/psdk/devpropdef.h
Normal file
84
reactos/include/psdk/devpropdef.h
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
#ifndef _DEVPROPDEF_H_
|
||||||
|
#define _DEVPROPDEF_H_
|
||||||
|
|
||||||
|
typedef ULONG DEVPROPTYPE, *PDEVPROPTYPE;
|
||||||
|
|
||||||
|
#define DEVPROP_TYPEMOD_ARRAY 0x00001000
|
||||||
|
#define DEVPROP_TYPEMOD_LIST 0x00002000
|
||||||
|
|
||||||
|
#define DEVPROP_TYPE_EMPTY 0x00000000
|
||||||
|
#define DEVPROP_TYPE_NULL 0x00000001
|
||||||
|
#define DEVPROP_TYPE_SBYTE 0x00000002
|
||||||
|
#define DEVPROP_TYPE_BYTE 0x00000003
|
||||||
|
#define DEVPROP_TYPE_INT16 0x00000004
|
||||||
|
#define DEVPROP_TYPE_UINT16 0x00000005
|
||||||
|
#define DEVPROP_TYPE_INT32 0x00000006
|
||||||
|
#define DEVPROP_TYPE_UINT32 0x00000007
|
||||||
|
#define DEVPROP_TYPE_INT64 0x00000008
|
||||||
|
#define DEVPROP_TYPE_UINT64 0x00000009
|
||||||
|
#define DEVPROP_TYPE_FLOAT 0x0000000A
|
||||||
|
#define DEVPROP_TYPE_DOUBLE 0x0000000B
|
||||||
|
#define DEVPROP_TYPE_DECIMAL 0x0000000C
|
||||||
|
#define DEVPROP_TYPE_GUID 0x0000000D
|
||||||
|
#define DEVPROP_TYPE_CURRENCY 0x0000000E
|
||||||
|
#define DEVPROP_TYPE_DATE 0x0000000F
|
||||||
|
#define DEVPROP_TYPE_FILETIME 0x00000010
|
||||||
|
#define DEVPROP_TYPE_BOOLEAN 0x00000011
|
||||||
|
#define DEVPROP_TYPE_STRING 0x00000012
|
||||||
|
#define DEVPROP_TYPE_STRING_LIST (DEVPROP_TYPE_STRING|DEVPROP_TYPEMOD_LIST)
|
||||||
|
#define DEVPROP_TYPE_SECURITY_DESCRIPTOR 0x00000013
|
||||||
|
#define DEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING 0x00000014
|
||||||
|
#define DEVPROP_TYPE_DEVPROPKEY 0x00000015
|
||||||
|
#define DEVPROP_TYPE_DEVPROPTYPE 0x00000016
|
||||||
|
#define DEVPROP_TYPE_BINARY (DEVPROP_TYPE_BYTE|DEVPROP_TYPEMOD_ARRAY)
|
||||||
|
#define DEVPROP_TYPE_ERROR 0x00000017
|
||||||
|
#define DEVPROP_TYPE_NTSTATUS 0x00000018
|
||||||
|
#define DEVPROP_TYPE_STRING_INDIRECT 0x00000019
|
||||||
|
|
||||||
|
#define MAX_DEVPROP_TYPE 0x00000019
|
||||||
|
#define MAX_DEVPROP_TYPEMOD 0x00002000
|
||||||
|
|
||||||
|
#define DEVPROP_MASK_TYPE 0x00000FFF
|
||||||
|
#define DEVPROP_MASK_TYPEMOD 0x0000F000
|
||||||
|
|
||||||
|
typedef CHAR DEVPROP_BOOLEAN, *PDEVPROP_BOOLEAN;
|
||||||
|
|
||||||
|
#define DEVPROP_TRUE ((DEVPROP_BOOLEAN)-1)
|
||||||
|
#define DEVPROP_FALSE ((DEVPROP_BOOLEAN) 0)
|
||||||
|
|
||||||
|
#ifndef DEVPROPKEY_DEFINED
|
||||||
|
#define DEVPROPKEY_DEFINED
|
||||||
|
|
||||||
|
typedef GUID DEVPROPGUID, *PDEVPROPGUID;
|
||||||
|
typedef ULONG DEVPROPID, *PDEVPROPID;
|
||||||
|
|
||||||
|
typedef struct _DEVPROPKEY {
|
||||||
|
DEVPROPGUID fmtid;
|
||||||
|
DEVPROPID pid;
|
||||||
|
} DEVPROPKEY, *PDEVPROPKEY;
|
||||||
|
|
||||||
|
#endif /* DEVPROPKEY_DEFINED */
|
||||||
|
|
||||||
|
#define DEVPROPID_FIRST_USABLE 2
|
||||||
|
|
||||||
|
#endif /* _DEVPROPDEF_H_ */
|
||||||
|
|
||||||
|
#ifdef DEFINE_DEVPROPKEY
|
||||||
|
#undef DEFINE_DEVPROPKEY
|
||||||
|
#endif
|
||||||
|
#ifdef INITGUID
|
||||||
|
#define DEFINE_DEVPROPKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const DEVPROPKEY DECLSPEC_SELECTANY name = {{ l, w1, w2, {b1, b2, b3, b4, b5, b6, b7, b8}}, pid}
|
||||||
|
#else
|
||||||
|
#define DEFINE_DEVPROPKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) EXTERN_C const DEVPROPKEY name
|
||||||
|
#endif /* INITGUID */
|
||||||
|
|
||||||
|
#ifndef IsEqualDevPropKey
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
#define IsEqualDevPropKey(a, b) (((a).pid == (b).pid) && IsEqualIID((a).fmtid, (b).fmtid))
|
||||||
|
#else
|
||||||
|
#define IsEqualDevPropKey(a, b) (((a).pid == (b).pid) && IsEqualIID(&(a).fmtid, &(b).fmtid))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* !IsEqualDevPropKey */
|
||||||
|
|
335
reactos/include/psdk/evntprov.h
Normal file
335
reactos/include/psdk/evntprov.h
Normal file
|
@ -0,0 +1,335 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef EVNTAPI
|
||||||
|
#ifndef MIDL_PASS
|
||||||
|
#ifdef _EVNT_SOURCE_
|
||||||
|
#define EVNTAPI __stdcall
|
||||||
|
#else
|
||||||
|
#define EVNTAPI DECLSPEC_IMPORT __stdcall
|
||||||
|
#endif /* _EVNT_SOURCE_ */
|
||||||
|
#endif /* MIDL_PASS */
|
||||||
|
#endif /* EVNTAPI */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define EVENT_MIN_LEVEL (0)
|
||||||
|
#define EVENT_MAX_LEVEL (0xff)
|
||||||
|
|
||||||
|
#define EVENT_ACTIVITY_CTRL_GET_ID (1)
|
||||||
|
#define EVENT_ACTIVITY_CTRL_SET_ID (2)
|
||||||
|
#define EVENT_ACTIVITY_CTRL_CREATE_ID (3)
|
||||||
|
#define EVENT_ACTIVITY_CTRL_GET_SET_ID (4)
|
||||||
|
#define EVENT_ACTIVITY_CTRL_CREATE_SET_ID (5)
|
||||||
|
|
||||||
|
typedef ULONGLONG REGHANDLE, *PREGHANDLE;
|
||||||
|
|
||||||
|
#define MAX_EVENT_DATA_DESCRIPTORS (128)
|
||||||
|
#define MAX_EVENT_FILTER_DATA_SIZE (1024)
|
||||||
|
|
||||||
|
#define EVENT_FILTER_TYPE_SCHEMATIZED (0x80000000)
|
||||||
|
|
||||||
|
typedef struct _EVENT_DATA_DESCRIPTOR {
|
||||||
|
ULONGLONG Ptr;
|
||||||
|
ULONG Size;
|
||||||
|
ULONG Reserved;
|
||||||
|
} EVENT_DATA_DESCRIPTOR, *PEVENT_DATA_DESCRIPTOR;
|
||||||
|
|
||||||
|
typedef struct _EVENT_DESCRIPTOR {
|
||||||
|
USHORT Id;
|
||||||
|
UCHAR Version;
|
||||||
|
UCHAR Channel;
|
||||||
|
UCHAR Level;
|
||||||
|
UCHAR Opcode;
|
||||||
|
USHORT Task;
|
||||||
|
ULONGLONG Keyword;
|
||||||
|
} EVENT_DESCRIPTOR, *PEVENT_DESCRIPTOR;
|
||||||
|
typedef const EVENT_DESCRIPTOR *PCEVENT_DESCRIPTOR;
|
||||||
|
|
||||||
|
typedef struct _EVENT_FILTER_DESCRIPTOR {
|
||||||
|
ULONGLONG Ptr;
|
||||||
|
ULONG Size;
|
||||||
|
ULONG Type;
|
||||||
|
} EVENT_FILTER_DESCRIPTOR, *PEVENT_FILTER_DESCRIPTOR;
|
||||||
|
|
||||||
|
typedef struct _EVENT_FILTER_HEADER {
|
||||||
|
USHORT Id;
|
||||||
|
UCHAR Version;
|
||||||
|
UCHAR Reserved[5];
|
||||||
|
ULONGLONG InstanceId;
|
||||||
|
ULONG Size;
|
||||||
|
ULONG NextOffset;
|
||||||
|
} EVENT_FILTER_HEADER, *PEVENT_FILTER_HEADER;
|
||||||
|
|
||||||
|
#ifndef _ETW_KM_
|
||||||
|
|
||||||
|
typedef VOID
|
||||||
|
(NTAPI *PENABLECALLBACK)(
|
||||||
|
IN LPCGUID SourceId,
|
||||||
|
IN ULONG IsEnabled,
|
||||||
|
IN UCHAR Level,
|
||||||
|
IN ULONGLONG MatchAnyKeyword,
|
||||||
|
IN ULONGLONG MatchAllKeyword,
|
||||||
|
IN PEVENT_FILTER_DESCRIPTOR FilterData OPTIONAL,
|
||||||
|
IN OUT PVOID CallbackContext OPTIONAL);
|
||||||
|
|
||||||
|
#if (WINVER >= _WIN32_WINNT_VISTA)
|
||||||
|
ULONG
|
||||||
|
EVNTAPI
|
||||||
|
EventRegister(
|
||||||
|
IN LPCGUID ProviderId,
|
||||||
|
IN PENABLECALLBACK EnableCallback OPTIONAL,
|
||||||
|
IN PVOID CallbackContext OPTIONAL,
|
||||||
|
OUT PREGHANDLE RegHandle);
|
||||||
|
|
||||||
|
ULONG
|
||||||
|
EVNTAPI
|
||||||
|
EventUnregister(
|
||||||
|
IN REGHANDLE RegHandle);
|
||||||
|
|
||||||
|
BOOLEAN
|
||||||
|
EVNTAPI
|
||||||
|
EventEnabled(
|
||||||
|
IN REGHANDLE RegHandle,
|
||||||
|
IN PCEVENT_DESCRIPTOR EventDescriptor);
|
||||||
|
|
||||||
|
BOOLEAN
|
||||||
|
EVNTAPI
|
||||||
|
EventProviderEnabled(
|
||||||
|
IN REGHANDLE RegHandle,
|
||||||
|
IN UCHAR Level,
|
||||||
|
IN ULONGLONG Keyword);
|
||||||
|
|
||||||
|
ULONG
|
||||||
|
EVNTAPI
|
||||||
|
EventWrite(
|
||||||
|
IN REGHANDLE RegHandle,
|
||||||
|
IN PCEVENT_DESCRIPTOR EventDescriptor,
|
||||||
|
IN ULONG UserDataCount,
|
||||||
|
IN PEVENT_DATA_DESCRIPTOR UserData);
|
||||||
|
|
||||||
|
ULONG
|
||||||
|
EVNTAPI
|
||||||
|
EventWriteTransfer(
|
||||||
|
IN REGHANDLE RegHandle,
|
||||||
|
IN PCEVENT_DESCRIPTOR EventDescriptor,
|
||||||
|
IN LPCGUID ActivityId OPTIONAL,
|
||||||
|
IN LPCGUID RelatedActivityId OPTIONAL,
|
||||||
|
IN ULONG UserDataCount,
|
||||||
|
IN PEVENT_DATA_DESCRIPTOR UserData OPTIONAL);
|
||||||
|
|
||||||
|
ULONG
|
||||||
|
EVNTAPI
|
||||||
|
EventWriteString(
|
||||||
|
IN REGHANDLE RegHandle,
|
||||||
|
IN UCHAR Level,
|
||||||
|
IN ULONGLONG Keyword,
|
||||||
|
IN PCWSTR String);
|
||||||
|
|
||||||
|
ULONG
|
||||||
|
EVNTAPI
|
||||||
|
EventActivityIdControl(
|
||||||
|
IN ULONG ControlCode,
|
||||||
|
IN OUT LPGUID ActivityId);
|
||||||
|
|
||||||
|
#endif /* (WINVER >= _WIN32_WINNT_VISTA) */
|
||||||
|
|
||||||
|
#if (WINVER >= _WIN32_WINNT_WIN7)
|
||||||
|
ULONG
|
||||||
|
EVNTAPI
|
||||||
|
EventWriteEx(
|
||||||
|
IN REGHANDLE RegHandle,
|
||||||
|
IN PCEVENT_DESCRIPTOR EventDescriptor,
|
||||||
|
IN ULONG64 Filter,
|
||||||
|
IN ULONG Flags,
|
||||||
|
IN LPCGUID ActivityId OPTIONAL,
|
||||||
|
IN LPCGUID RelatedActivityId OPTIONAL,
|
||||||
|
IN ULONG UserDataCount,
|
||||||
|
IN PEVENT_DATA_DESCRIPTOR UserData OPTIONAL);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // _ETW_KM_
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
VOID
|
||||||
|
EventDataDescCreate(
|
||||||
|
OUT PEVENT_DATA_DESCRIPTOR EventDataDescriptor,
|
||||||
|
IN const VOID* DataPtr,
|
||||||
|
IN ULONG DataSize)
|
||||||
|
{
|
||||||
|
EventDataDescriptor->Ptr = (ULONGLONG)(ULONG_PTR)DataPtr;
|
||||||
|
EventDataDescriptor->Size = DataSize;
|
||||||
|
EventDataDescriptor->Reserved = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
VOID
|
||||||
|
EventDescCreate(
|
||||||
|
OUT PEVENT_DESCRIPTOR EventDescriptor,
|
||||||
|
IN USHORT Id,
|
||||||
|
IN UCHAR Version,
|
||||||
|
IN UCHAR Channel,
|
||||||
|
IN UCHAR Level,
|
||||||
|
IN USHORT Task,
|
||||||
|
IN UCHAR Opcode,
|
||||||
|
IN ULONGLONG Keyword)
|
||||||
|
{
|
||||||
|
EventDescriptor->Id = Id;
|
||||||
|
EventDescriptor->Version = Version;
|
||||||
|
EventDescriptor->Channel = Channel;
|
||||||
|
EventDescriptor->Level = Level;
|
||||||
|
EventDescriptor->Task = Task;
|
||||||
|
EventDescriptor->Opcode = Opcode;
|
||||||
|
EventDescriptor->Keyword = Keyword;
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
VOID
|
||||||
|
EventDescZero(
|
||||||
|
OUT PEVENT_DESCRIPTOR EventDescriptor)
|
||||||
|
{
|
||||||
|
memset(EventDescriptor, 0, sizeof(EVENT_DESCRIPTOR));
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
USHORT
|
||||||
|
EventDescGetId(
|
||||||
|
IN PCEVENT_DESCRIPTOR EventDescriptor)
|
||||||
|
{
|
||||||
|
return (EventDescriptor->Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
UCHAR
|
||||||
|
EventDescGetVersion(
|
||||||
|
IN PCEVENT_DESCRIPTOR EventDescriptor)
|
||||||
|
{
|
||||||
|
return (EventDescriptor->Version);
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
USHORT
|
||||||
|
EventDescGetTask(
|
||||||
|
IN PCEVENT_DESCRIPTOR EventDescriptor)
|
||||||
|
{
|
||||||
|
return (EventDescriptor->Task);
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
UCHAR
|
||||||
|
EventDescGetOpcode(
|
||||||
|
IN PCEVENT_DESCRIPTOR EventDescriptor)
|
||||||
|
{
|
||||||
|
return (EventDescriptor->Opcode);
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
UCHAR
|
||||||
|
EventDescGetChannel(
|
||||||
|
IN PCEVENT_DESCRIPTOR EventDescriptor)
|
||||||
|
{
|
||||||
|
return (EventDescriptor->Channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
UCHAR
|
||||||
|
EventDescGetLevel(
|
||||||
|
IN PCEVENT_DESCRIPTOR EventDescriptor)
|
||||||
|
{
|
||||||
|
return (EventDescriptor->Level);
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
ULONGLONG
|
||||||
|
EventDescGetKeyword(
|
||||||
|
IN PCEVENT_DESCRIPTOR EventDescriptor)
|
||||||
|
{
|
||||||
|
return (EventDescriptor->Keyword);
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
PEVENT_DESCRIPTOR
|
||||||
|
EventDescSetId(
|
||||||
|
IN PEVENT_DESCRIPTOR EventDescriptor,
|
||||||
|
IN USHORT Id)
|
||||||
|
{
|
||||||
|
EventDescriptor->Id = Id;
|
||||||
|
return (EventDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
PEVENT_DESCRIPTOR
|
||||||
|
EventDescSetVersion(
|
||||||
|
IN PEVENT_DESCRIPTOR EventDescriptor,
|
||||||
|
IN UCHAR Version)
|
||||||
|
{
|
||||||
|
EventDescriptor->Version = Version;
|
||||||
|
return (EventDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
PEVENT_DESCRIPTOR
|
||||||
|
EventDescSetTask(
|
||||||
|
IN PEVENT_DESCRIPTOR EventDescriptor,
|
||||||
|
IN USHORT Task)
|
||||||
|
{
|
||||||
|
EventDescriptor->Task = Task;
|
||||||
|
return (EventDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
PEVENT_DESCRIPTOR
|
||||||
|
EventDescSetOpcode(
|
||||||
|
IN PEVENT_DESCRIPTOR EventDescriptor,
|
||||||
|
IN UCHAR Opcode)
|
||||||
|
{
|
||||||
|
EventDescriptor->Opcode = Opcode;
|
||||||
|
return (EventDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
PEVENT_DESCRIPTOR
|
||||||
|
EventDescSetLevel(
|
||||||
|
IN PEVENT_DESCRIPTOR EventDescriptor,
|
||||||
|
IN UCHAR Level)
|
||||||
|
{
|
||||||
|
EventDescriptor->Level = Level;
|
||||||
|
return (EventDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
PEVENT_DESCRIPTOR
|
||||||
|
EventDescSetChannel(
|
||||||
|
IN PEVENT_DESCRIPTOR EventDescriptor,
|
||||||
|
IN UCHAR Channel)
|
||||||
|
{
|
||||||
|
EventDescriptor->Channel = Channel;
|
||||||
|
return (EventDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
PEVENT_DESCRIPTOR
|
||||||
|
EventDescSetKeyword(
|
||||||
|
IN PEVENT_DESCRIPTOR EventDescriptor,
|
||||||
|
IN ULONGLONG Keyword)
|
||||||
|
{
|
||||||
|
EventDescriptor->Keyword = Keyword;
|
||||||
|
return (EventDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FORCEINLINE
|
||||||
|
PEVENT_DESCRIPTOR
|
||||||
|
EventDescOrKeyword(
|
||||||
|
IN PEVENT_DESCRIPTOR EventDescriptor,
|
||||||
|
IN ULONGLONG Keyword)
|
||||||
|
{
|
||||||
|
EventDescriptor->Keyword |= Keyword;
|
||||||
|
return (EventDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -173,11 +173,6 @@ typedef unsigned long POINTER_64; // FIXME! HACK!!!
|
||||||
|
|
||||||
#define NTAPI __stdcall
|
#define NTAPI __stdcall
|
||||||
|
|
||||||
//
|
|
||||||
// Used by the DDK exclusively , don't put in drivers
|
|
||||||
//
|
|
||||||
#define DDKAPI __stdcall // Use NTAPI instead
|
|
||||||
#define DDKCDECLAPI __cdecl // Just use __cdecl
|
|
||||||
|
|
||||||
/* Import and Export Specifiers */
|
/* Import and Export Specifiers */
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -20,14 +20,7 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __TVOUT_H
|
|
||||||
#define __TVOUT_H
|
|
||||||
|
|
||||||
|
|
||||||
#if _MSC_VER > 1000
|
|
||||||
#pragma once
|
#pragma once
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef GUID_DEFINED
|
#ifndef GUID_DEFINED
|
||||||
#include <guiddef.h>
|
#include <guiddef.h>
|
||||||
|
@ -84,30 +77,27 @@
|
||||||
#define VP_CP_CMD_CHANGE 0x00000004
|
#define VP_CP_CMD_CHANGE 0x00000004
|
||||||
|
|
||||||
typedef struct _VIDEOPARAMETERS {
|
typedef struct _VIDEOPARAMETERS {
|
||||||
GUID Guid;
|
GUID Guid;
|
||||||
ULONG dwOffset;
|
ULONG dwOffset;
|
||||||
ULONG dwCommand;
|
ULONG dwCommand;
|
||||||
ULONG dwFlags;
|
ULONG dwFlags;
|
||||||
ULONG dwMode;
|
ULONG dwMode;
|
||||||
ULONG dwTVStandard;
|
ULONG dwTVStandard;
|
||||||
ULONG dwAvailableModes;
|
ULONG dwAvailableModes;
|
||||||
ULONG dwAvailableTVStandard;
|
ULONG dwAvailableTVStandard;
|
||||||
ULONG dwFlickerFilter;
|
ULONG dwFlickerFilter;
|
||||||
ULONG dwOverScanX;
|
ULONG dwOverScanX;
|
||||||
ULONG dwOverScanY;
|
ULONG dwOverScanY;
|
||||||
ULONG dwMaxUnscaledX;
|
ULONG dwMaxUnscaledX;
|
||||||
ULONG dwMaxUnscaledY;
|
ULONG dwMaxUnscaledY;
|
||||||
ULONG dwPositionX;
|
ULONG dwPositionX;
|
||||||
ULONG dwPositionY;
|
ULONG dwPositionY;
|
||||||
ULONG dwBrightness;
|
ULONG dwBrightness;
|
||||||
ULONG dwContrast;
|
ULONG dwContrast;
|
||||||
ULONG dwCPType;
|
ULONG dwCPType;
|
||||||
ULONG dwCPCommand;
|
ULONG dwCPCommand;
|
||||||
ULONG dwCPStandard;
|
ULONG dwCPStandard;
|
||||||
ULONG dwCPKey;
|
ULONG dwCPKey;
|
||||||
ULONG bCP_APSTriggerBits;
|
ULONG bCP_APSTriggerBits;
|
||||||
UCHAR bOEMCopyProtection[256];
|
UCHAR bOEMCopyProtection[256];
|
||||||
} VIDEOPARAMETERS, *PVIDEOPARAMETERS, FAR *LPVIDEOPARAMETERS;
|
} VIDEOPARAMETERS, *PVIDEOPARAMETERS, *LPVIDEOPARAMETERS;
|
||||||
|
|
||||||
|
|
||||||
#endif /* __TVOUT_H */
|
|
|
@ -665,6 +665,8 @@ typedef struct _USB_DEVICE_PERFORMANCE_INFO {
|
||||||
|
|
||||||
#include <poppack.h>
|
#include <poppack.h>
|
||||||
|
|
||||||
|
#endif /* USB_KERNEL_IOCTL */
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue