mirror of
https://github.com/reactos/reactos.git
synced 2025-07-12 16:44: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 compiler="midl">-m32 --win32</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>
|
||||
</group>
|
||||
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
<?xml version="1.0"?>
|
||||
<!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>
|
||||
</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"?>
|
||||
<!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>
|
||||
</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
|
||||
DDKCDECLAPI
|
||||
__cdecl
|
||||
ScsiDebugPrint(
|
||||
IN ULONG DebugPrintLevel,
|
||||
IN PCCHAR DebugMessage,
|
||||
|
@ -421,7 +421,7 @@ ScsiDebugPrint(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortCompleteRequest(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN UCHAR PathId,
|
||||
|
@ -435,7 +435,7 @@ ScsiPortCompleteRequest(
|
|||
|
||||
#undef ScsiPortConvertPhysicalAddressToUlong
|
||||
ULONG
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortConvertPhysicalAddressToUlong(
|
||||
IN SCSI_PHYSICAL_ADDRESS Address)
|
||||
{
|
||||
|
@ -443,7 +443,7 @@ ScsiPortConvertPhysicalAddressToUlong(
|
|||
}
|
||||
|
||||
SCSI_PHYSICAL_ADDRESS
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortConvertUlongToPhysicalAddress(
|
||||
IN ULONG UlongAddress)
|
||||
{
|
||||
|
@ -451,7 +451,7 @@ ScsiPortConvertUlongToPhysicalAddress(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortFlushDma(
|
||||
IN PVOID DeviceExtension)
|
||||
{
|
||||
|
@ -460,7 +460,7 @@ ScsiPortFlushDma(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortFreeDeviceBase(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN PVOID MappedAddress)
|
||||
|
@ -469,7 +469,7 @@ ScsiPortFreeDeviceBase(
|
|||
}
|
||||
|
||||
ULONG
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortGetBusData(
|
||||
IN PVOID DeviceExtension,
|
||||
IN ULONG BusDataType,
|
||||
|
@ -482,7 +482,7 @@ ScsiPortGetBusData(
|
|||
}
|
||||
|
||||
PVOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortGetDeviceBase(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN INTERFACE_TYPE BusType,
|
||||
|
@ -514,7 +514,7 @@ ScsiPortGetDeviceBase(
|
|||
}
|
||||
|
||||
PVOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortGetLogicalUnit(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN UCHAR PathId,
|
||||
|
@ -527,7 +527,7 @@ ScsiPortGetLogicalUnit(
|
|||
}
|
||||
|
||||
SCSI_PHYSICAL_ADDRESS
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortGetPhysicalAddress(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
|
||||
|
@ -564,7 +564,7 @@ ScsiPortGetPhysicalAddress(
|
|||
}
|
||||
|
||||
PSCSI_REQUEST_BLOCK
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortGetSrb(
|
||||
IN PVOID DeviceExtension,
|
||||
IN UCHAR PathId,
|
||||
|
@ -641,7 +641,7 @@ SpiAllocateCommonBuffer(
|
|||
}
|
||||
|
||||
PVOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortGetUncachedExtension(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN PPORT_CONFIGURATION_INFORMATION ConfigInfo,
|
||||
|
@ -726,7 +726,7 @@ ScsiPortGetUncachedExtension(
|
|||
}
|
||||
|
||||
PVOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortGetVirtualAddress(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN SCSI_PHYSICAL_ADDRESS PhysicalAddress)
|
||||
|
@ -1031,7 +1031,7 @@ SpiGetPciConfigData(
|
|||
}
|
||||
|
||||
ULONG
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortInitialize(
|
||||
IN PVOID Argument1,
|
||||
IN PVOID Argument2,
|
||||
|
@ -1186,7 +1186,7 @@ ScsiPortInitialize(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortIoMapTransfer(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN PSCSI_REQUEST_BLOCK Srb,
|
||||
|
@ -1198,7 +1198,7 @@ ScsiPortIoMapTransfer(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortLogError(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
|
||||
|
@ -1213,7 +1213,7 @@ ScsiPortLogError(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortMoveMemory(
|
||||
IN PVOID WriteBuffer,
|
||||
IN PVOID ReadBuffer,
|
||||
|
@ -1223,7 +1223,7 @@ ScsiPortMoveMemory(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKCDECLAPI
|
||||
__cdecl
|
||||
ScsiPortNotification(
|
||||
IN SCSI_NOTIFICATION_TYPE NotificationType,
|
||||
IN PVOID HwDeviceExtension,
|
||||
|
@ -1259,7 +1259,7 @@ ScsiPortNotification(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortReadPortBufferUchar(
|
||||
IN PUCHAR Port,
|
||||
OUT PUCHAR Buffer,
|
||||
|
@ -1269,7 +1269,7 @@ ScsiPortReadPortBufferUchar(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortReadPortBufferUlong(
|
||||
IN PULONG Port,
|
||||
OUT PULONG Buffer,
|
||||
|
@ -1279,7 +1279,7 @@ ScsiPortReadPortBufferUlong(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortReadPortBufferUshort(
|
||||
IN PUSHORT Port,
|
||||
OUT PUSHORT Buffer,
|
||||
|
@ -1289,7 +1289,7 @@ ScsiPortReadPortBufferUshort(
|
|||
}
|
||||
|
||||
UCHAR
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortReadPortUchar(
|
||||
IN PUCHAR Port)
|
||||
{
|
||||
|
@ -1300,7 +1300,7 @@ ScsiPortReadPortUchar(
|
|||
}
|
||||
|
||||
ULONG
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortReadPortUlong(
|
||||
IN PULONG Port)
|
||||
{
|
||||
|
@ -1308,7 +1308,7 @@ ScsiPortReadPortUlong(
|
|||
}
|
||||
|
||||
USHORT
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortReadPortUshort(
|
||||
IN PUSHORT Port)
|
||||
{
|
||||
|
@ -1316,7 +1316,7 @@ ScsiPortReadPortUshort(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortReadRegisterBufferUchar(
|
||||
IN PUCHAR Register,
|
||||
IN PUCHAR Buffer,
|
||||
|
@ -1327,7 +1327,7 @@ ScsiPortReadRegisterBufferUchar(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortReadRegisterBufferUlong(
|
||||
IN PULONG Register,
|
||||
IN PULONG Buffer,
|
||||
|
@ -1338,7 +1338,7 @@ ScsiPortReadRegisterBufferUlong(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortReadRegisterBufferUshort(
|
||||
IN PUSHORT Register,
|
||||
IN PUSHORT Buffer,
|
||||
|
@ -1349,7 +1349,7 @@ ScsiPortReadRegisterBufferUshort(
|
|||
}
|
||||
|
||||
UCHAR
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortReadRegisterUchar(
|
||||
IN PUCHAR Register)
|
||||
{
|
||||
|
@ -1357,7 +1357,7 @@ ScsiPortReadRegisterUchar(
|
|||
}
|
||||
|
||||
ULONG
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortReadRegisterUlong(
|
||||
IN PULONG Register)
|
||||
{
|
||||
|
@ -1365,7 +1365,7 @@ ScsiPortReadRegisterUlong(
|
|||
}
|
||||
|
||||
USHORT
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortReadRegisterUshort(
|
||||
IN PUSHORT Register)
|
||||
{
|
||||
|
@ -1373,7 +1373,7 @@ ScsiPortReadRegisterUshort(
|
|||
}
|
||||
|
||||
ULONG
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortSetBusDataByOffset(
|
||||
IN PVOID DeviceExtension,
|
||||
IN ULONG BusDataType,
|
||||
|
@ -1389,7 +1389,7 @@ ScsiPortSetBusDataByOffset(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortStallExecution(
|
||||
IN ULONG Delay)
|
||||
{
|
||||
|
@ -1397,7 +1397,7 @@ ScsiPortStallExecution(
|
|||
}
|
||||
|
||||
BOOLEAN
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortValidateRange(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN INTERFACE_TYPE BusType,
|
||||
|
@ -1417,7 +1417,7 @@ ScsiPortValidateRange(
|
|||
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortWritePortBufferUchar(
|
||||
IN PUCHAR Port,
|
||||
IN PUCHAR Buffer,
|
||||
|
@ -1427,7 +1427,7 @@ ScsiPortWritePortBufferUchar(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortWritePortBufferUlong(
|
||||
IN PULONG Port,
|
||||
IN PULONG Buffer,
|
||||
|
@ -1437,7 +1437,7 @@ ScsiPortWritePortBufferUlong(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortWritePortBufferUshort(
|
||||
IN PUSHORT Port,
|
||||
IN PUSHORT Buffer,
|
||||
|
@ -1447,7 +1447,7 @@ ScsiPortWritePortBufferUshort(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortWritePortUchar(
|
||||
IN PUCHAR Port,
|
||||
IN UCHAR Value)
|
||||
|
@ -1456,7 +1456,7 @@ ScsiPortWritePortUchar(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortWritePortUlong(
|
||||
IN PULONG Port,
|
||||
IN ULONG Value)
|
||||
|
@ -1465,7 +1465,7 @@ ScsiPortWritePortUlong(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortWritePortUshort(
|
||||
IN PUSHORT Port,
|
||||
IN USHORT Value)
|
||||
|
@ -1474,7 +1474,7 @@ ScsiPortWritePortUshort(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortWriteRegisterBufferUchar(
|
||||
IN PUCHAR Register,
|
||||
IN PUCHAR Buffer,
|
||||
|
@ -1485,7 +1485,7 @@ ScsiPortWriteRegisterBufferUchar(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortWriteRegisterBufferUlong(
|
||||
IN PULONG Register,
|
||||
IN PULONG Buffer,
|
||||
|
@ -1496,7 +1496,7 @@ ScsiPortWriteRegisterBufferUlong(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortWriteRegisterBufferUshort(
|
||||
IN PUSHORT Register,
|
||||
IN PUSHORT Buffer,
|
||||
|
@ -1507,7 +1507,7 @@ ScsiPortWriteRegisterBufferUshort(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortWriteRegisterUchar(
|
||||
IN PUCHAR Register,
|
||||
IN ULONG Value)
|
||||
|
@ -1516,7 +1516,7 @@ ScsiPortWriteRegisterUchar(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortWriteRegisterUlong(
|
||||
IN PULONG Register,
|
||||
IN ULONG Value)
|
||||
|
@ -1525,7 +1525,7 @@ ScsiPortWriteRegisterUlong(
|
|||
}
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
ScsiPortWriteRegisterUshort(
|
||||
IN PUSHORT Register,
|
||||
IN USHORT Value)
|
||||
|
|
|
@ -9,7 +9,9 @@
|
|||
|
||||
#include "precomp.h"
|
||||
|
||||
#ifndef _MSC_VER
|
||||
const GUID IID_IKsPropertySet = {0x31efac30, 0x515c, 0x11d0, {0xa9,0xaa, 0x00,0xaa,0x00,0x61,0xbe,0x93}};
|
||||
#endif
|
||||
|
||||
class CControlNode : public IUnknown
|
||||
{
|
||||
|
@ -32,12 +34,12 @@ public:
|
|||
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(){};
|
||||
|
||||
protected:
|
||||
LONG m_Ref;
|
||||
HANDLE m_hFile;
|
||||
IKsPropertySet * m_pKsProperty;
|
||||
ULONG m_NodeType;
|
||||
ULONG m_PinId;
|
||||
};
|
||||
|
@ -58,19 +60,19 @@ CControlNode::QueryInterface(
|
|||
}
|
||||
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))
|
||||
{
|
||||
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))
|
||||
{
|
||||
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))
|
||||
{
|
||||
return CBDADigitalDemodulator_fnConstructor(m_hFile, m_NodeType, refiid, Output);
|
||||
return CBDADigitalDemodulator_fnConstructor(m_pKsProperty, m_NodeType, refiid, Output);
|
||||
}
|
||||
#ifdef BDAPLGIN_TRACE
|
||||
WCHAR Buffer[MAX_PATH];
|
||||
|
@ -88,7 +90,6 @@ CControlNode::QueryInterface(
|
|||
HRESULT
|
||||
WINAPI
|
||||
CControlNode_fnConstructor(
|
||||
HANDLE hFile,
|
||||
IBaseFilter * pFilter,
|
||||
ULONG NodeType,
|
||||
ULONG PinId,
|
||||
|
@ -98,7 +99,7 @@ CControlNode_fnConstructor(
|
|||
WCHAR Buffer[100];
|
||||
HRESULT hr;
|
||||
IPin * pPin = NULL;
|
||||
IKsObject * pObject = NULL;
|
||||
IKsPropertySet * pProperty;
|
||||
|
||||
// store pin id
|
||||
swprintf(Buffer, L"%u", PinId);
|
||||
|
@ -115,26 +116,21 @@ CControlNode_fnConstructor(
|
|||
return hr;
|
||||
}
|
||||
|
||||
// query IKsObject interface
|
||||
hr = pPin->QueryInterface(IID_IKsObject, (void**)&pObject);
|
||||
// query for IKsPropertySet interface
|
||||
hr = pPin->QueryInterface(IID_IKsPropertySet, (void**)&pProperty);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
#ifdef BDAPLGIN_TRACE
|
||||
swprintf(Buffer, L"CControlNode_fnConstructor get IID_IKsObject status %lx\n", hr);
|
||||
OutputDebugStringW(Buffer);
|
||||
#endif
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
// get pin handle
|
||||
hFile = pObject->KsGetObjectHandle();
|
||||
// release IKsObject interface
|
||||
pObject->Release();
|
||||
}
|
||||
// release IPin interface
|
||||
pPin->Release();
|
||||
|
||||
// construct device control
|
||||
CControlNode * handler = new CControlNode(hFile, NodeType, PinId);
|
||||
CControlNode * handler = new CControlNode(pProperty, NodeType, PinId);
|
||||
|
||||
#ifdef BDAPLGIN_TRACE
|
||||
OutputDebugStringW(L"CControlNode_fnConstructor\n");
|
||||
|
|
|
@ -9,20 +9,24 @@
|
|||
|
||||
#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}};
|
||||
|
||||
#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 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 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,
|
||||
public IBDA_Topology
|
||||
|
@ -476,7 +480,7 @@ CBDADeviceControl::GetControlNode(ULONG ulInputPinId, ULONG ulOutputPinId, ULONG
|
|||
if (FAILED(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
|
||||
swprintf(Buffer, L"CBDADeviceControl::GetControlNode: hr %lx\n", hr);
|
||||
|
|
|
@ -9,8 +9,10 @@
|
|||
|
||||
#include "precomp.h"
|
||||
|
||||
#ifndef _MSC_VER
|
||||
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}};
|
||||
#endif
|
||||
|
||||
class CBDADigitalDemodulator : public IBDA_DigitalDemodulator
|
||||
{
|
||||
|
@ -48,12 +50,12 @@ public:
|
|||
HRESULT STDMETHODCALLTYPE put_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(){};
|
||||
|
||||
protected:
|
||||
LONG m_Ref;
|
||||
HANDLE m_hFile;
|
||||
IKsPropertySet * m_pProperty;
|
||||
ULONG m_NodeId;
|
||||
};
|
||||
|
||||
|
@ -86,6 +88,7 @@ CBDADigitalDemodulator::QueryInterface(
|
|||
swprintf(Buffer, L"CBDADigitalDemodulator::QueryInterface: NoInterface for %s", lpstr);
|
||||
OutputDebugStringW(Buffer);
|
||||
CoTaskMemFree(lpstr);
|
||||
DebugBreak();
|
||||
#endif
|
||||
|
||||
return E_NOINTERFACE;
|
||||
|
@ -98,20 +101,17 @@ CBDADigitalDemodulator::put_ModulationType(ModulationType *pModulationType)
|
|||
KSP_NODE Node;
|
||||
HRESULT hr;
|
||||
|
||||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -131,20 +131,18 @@ CBDADigitalDemodulator::put_InnerFECMethod(FECMethod *pFECMethod)
|
|||
{
|
||||
KSP_NODE Node;
|
||||
HRESULT hr;
|
||||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -165,20 +163,16 @@ CBDADigitalDemodulator::put_InnerFECRate(BinaryConvolutionCodeRate *pFECRate)
|
|||
KSP_NODE Node;
|
||||
HRESULT hr;
|
||||
|
||||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -198,20 +192,17 @@ CBDADigitalDemodulator::put_OuterFECMethod(FECMethod *pFECMethod)
|
|||
{
|
||||
KSP_NODE Node;
|
||||
HRESULT hr;
|
||||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -232,20 +223,16 @@ CBDADigitalDemodulator::put_OuterFECRate(BinaryConvolutionCodeRate *pFECRate)
|
|||
KSP_NODE Node;
|
||||
HRESULT hr;
|
||||
|
||||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -265,20 +252,17 @@ CBDADigitalDemodulator::put_SymbolRate(ULONG *pSymbolRate)
|
|||
{
|
||||
KSP_NODE Node;
|
||||
HRESULT hr;
|
||||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -298,20 +282,17 @@ CBDADigitalDemodulator::put_SpectralInversion(SpectralInversion *pSpectralInvers
|
|||
{
|
||||
KSP_NODE Node;
|
||||
HRESULT hr;
|
||||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -329,13 +310,13 @@ CBDADigitalDemodulator::get_SpectralInversion(SpectralInversion *pSpectralInvers
|
|||
HRESULT
|
||||
WINAPI
|
||||
CBDADigitalDemodulator_fnConstructor(
|
||||
HANDLE hFile,
|
||||
IKsPropertySet * pProperty,
|
||||
ULONG NodeId,
|
||||
REFIID riid,
|
||||
LPVOID * ppv)
|
||||
{
|
||||
// construct device control
|
||||
CBDADigitalDemodulator * handler = new CBDADigitalDemodulator(hFile, NodeId);
|
||||
CBDADigitalDemodulator * handler = new CBDADigitalDemodulator(pProperty, NodeId);
|
||||
|
||||
#ifdef BDAPLGIN_TRACE
|
||||
OutputDebugStringW(L"CBDADigitalDemodulator_fnConstructor\n");
|
||||
|
|
|
@ -9,8 +9,10 @@
|
|||
|
||||
#include "precomp.h"
|
||||
|
||||
#ifndef _MSC_VER
|
||||
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}};
|
||||
#endif
|
||||
|
||||
class CBDAFrequencyFilter : public IBDA_FrequencyFilter
|
||||
{
|
||||
|
@ -46,12 +48,12 @@ public:
|
|||
HRESULT STDMETHODCALLTYPE put_FrequencyMultiplier(ULONG ulMultiplier);
|
||||
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(){};
|
||||
|
||||
protected:
|
||||
LONG m_Ref;
|
||||
HANDLE m_hFile;
|
||||
IKsPropertySet * m_pProperty;
|
||||
ULONG m_NodeId;
|
||||
};
|
||||
|
||||
|
@ -84,6 +86,7 @@ CBDAFrequencyFilter::QueryInterface(
|
|||
swprintf(Buffer, L"CControlNode::QueryInterface: NoInterface for %s", lpstr);
|
||||
OutputDebugStringW(Buffer);
|
||||
CoTaskMemFree(lpstr);
|
||||
DebugBreak();
|
||||
#endif
|
||||
|
||||
return E_NOINTERFACE;
|
||||
|
@ -110,20 +113,16 @@ CBDAFrequencyFilter::put_Frequency(ULONG ulFrequency)
|
|||
KSP_NODE Node;
|
||||
HRESULT hr;
|
||||
|
||||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -143,20 +142,17 @@ CBDAFrequencyFilter::put_Polarity(Polarisation Polarity)
|
|||
{
|
||||
KSP_NODE Node;
|
||||
HRESULT hr;
|
||||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -176,20 +172,17 @@ CBDAFrequencyFilter::put_Range(ULONG ulRange)
|
|||
{
|
||||
KSP_NODE Node;
|
||||
HRESULT hr;
|
||||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -209,20 +202,17 @@ CBDAFrequencyFilter::put_Bandwidth(ULONG ulBandwidth)
|
|||
{
|
||||
KSP_NODE Node;
|
||||
HRESULT hr;
|
||||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -241,20 +231,17 @@ CBDAFrequencyFilter::put_FrequencyMultiplier(ULONG ulMultiplier)
|
|||
{
|
||||
KSP_NODE Node;
|
||||
HRESULT hr;
|
||||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -271,13 +258,13 @@ CBDAFrequencyFilter::get_FrequencyMultiplier(ULONG *pulMultiplier)
|
|||
HRESULT
|
||||
WINAPI
|
||||
CBDAFrequencyFilter_fnConstructor(
|
||||
HANDLE hFile,
|
||||
IKsPropertySet* pProperty,
|
||||
ULONG NodeId,
|
||||
REFIID riid,
|
||||
LPVOID * ppv)
|
||||
{
|
||||
// construct device control
|
||||
CBDAFrequencyFilter * handler = new CBDAFrequencyFilter(hFile, NodeId);
|
||||
CBDAFrequencyFilter * handler = new CBDAFrequencyFilter(pProperty, NodeId);
|
||||
|
||||
#ifdef BDAPLGIN_TRACE
|
||||
OutputDebugStringW(L"CBDAFrequencyFilter_fnConstructor\n");
|
||||
|
|
|
@ -9,8 +9,10 @@
|
|||
|
||||
#include "precomp.h"
|
||||
|
||||
#ifndef _MSC_VER
|
||||
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}};
|
||||
#endif
|
||||
|
||||
class CBDALNBInfo : public IBDA_LNBInfo
|
||||
{
|
||||
|
@ -41,12 +43,12 @@ public:
|
|||
HRESULT STDMETHODCALLTYPE put_HighLowSwitchFrequency(ULONG ulSwitchFrequency);
|
||||
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(){};
|
||||
|
||||
protected:
|
||||
LONG m_Ref;
|
||||
HANDLE m_hFile;
|
||||
IKsPropertySet * m_pProperty;
|
||||
ULONG m_NodeId;
|
||||
};
|
||||
|
||||
|
@ -90,20 +92,17 @@ CBDALNBInfo::put_LocalOscilatorFrequencyLowBand(ULONG ulLOFLow)
|
|||
{
|
||||
KSP_NODE Node;
|
||||
HRESULT hr;
|
||||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -123,20 +122,17 @@ CBDALNBInfo::put_LocalOscilatorFrequencyHighBand(ULONG ulLOFHigh)
|
|||
{
|
||||
KSP_NODE Node;
|
||||
HRESULT hr;
|
||||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -156,20 +152,17 @@ CBDALNBInfo::put_HighLowSwitchFrequency(ULONG ulSwitchFrequency)
|
|||
{
|
||||
KSP_NODE Node;
|
||||
HRESULT hr;
|
||||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -186,13 +179,13 @@ CBDALNBInfo::get_HighLowSwitchFrequency(ULONG *pulSwitchFrequency)
|
|||
HRESULT
|
||||
WINAPI
|
||||
CBDALNBInfo_fnConstructor(
|
||||
HANDLE hFile,
|
||||
IKsPropertySet *pProperty,
|
||||
ULONG NodeId,
|
||||
REFIID riid,
|
||||
LPVOID * ppv)
|
||||
{
|
||||
// construct device control
|
||||
CBDALNBInfo * handler = new CBDALNBInfo(hFile, NodeId);
|
||||
CBDALNBInfo * handler = new CBDALNBInfo(pProperty, NodeId);
|
||||
|
||||
#ifdef BDAPLGIN_TRACE
|
||||
OutputDebugStringW(L"CBDALNBInfo_fnConstructor\n");
|
||||
|
|
|
@ -9,9 +9,12 @@
|
|||
|
||||
#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 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}};
|
||||
#endif
|
||||
|
||||
|
||||
class CBDAPinControl : public IBDA_PinControl
|
||||
{
|
||||
|
@ -39,7 +42,7 @@ public:
|
|||
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()
|
||||
{
|
||||
//m_pConnectedPin->Release();
|
||||
|
@ -51,6 +54,7 @@ protected:
|
|||
HANDLE m_Handle;
|
||||
IBDA_NetworkProvider * m_pProvider;
|
||||
IPin * m_pConnectedPin;
|
||||
ULONG m_RegistrationCtx;
|
||||
};
|
||||
|
||||
HRESULT
|
||||
|
@ -72,16 +76,7 @@ CBDAPinControl::QueryInterface(
|
|||
reinterpret_cast<IBDA_PinControl*>(*Output)->AddRef();
|
||||
return NOERROR;
|
||||
}
|
||||
|
||||
#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
|
||||
|
||||
DebugBreak();
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
//-------------------------------------------------------------------
|
||||
|
@ -142,10 +137,98 @@ STDMETHODCALLTYPE
|
|||
CBDAPinControl::RegistrationContext(ULONG *pulRegistrationCtx)
|
||||
{
|
||||
#ifdef BDAPLGIN_TRACE
|
||||
OutputDebugStringW(L"CBDAPinControl::RegistrationContext: NotImplemented\n");
|
||||
OutputDebugStringW(L"CBDAPinControl::RegistrationContext\n");
|
||||
#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
|
||||
|
@ -158,30 +241,20 @@ CBDAPinControl_fnConstructor(
|
|||
IPin * pConnectedPin = NULL;
|
||||
IBDA_NetworkProvider * pNetworkProvider = NULL;
|
||||
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;
|
||||
IKsObject * pObject = NULL;
|
||||
IPin * pPin = NULL;
|
||||
IEnumFilters *pEnumFilters = NULL;
|
||||
|
||||
IBaseFilter * ppFilter[1];
|
||||
IUnknown * pUnknown = NULL;
|
||||
PIN_INFO PinInfo;
|
||||
FILTER_INFO FilterInfo;
|
||||
|
||||
ULONG RegistrationCtx = 0;
|
||||
|
||||
if (!pUnkOuter)
|
||||
return E_POINTER;
|
||||
|
||||
OutputDebugStringW(L"CBDAPinControl_fnConstructor\n");
|
||||
//DebugBreak();
|
||||
|
||||
// query for IKsObject interface
|
||||
hr = pUnkOuter->QueryInterface(IID_IKsObject, (void**)&pObject);
|
||||
|
||||
|
@ -209,8 +282,15 @@ CBDAPinControl_fnConstructor(
|
|||
return hr;
|
||||
}
|
||||
|
||||
if (!PinInfo.pFilter)
|
||||
{
|
||||
//clean up
|
||||
pObject->Release();
|
||||
pPin->Release();
|
||||
return hr;
|
||||
}
|
||||
|
||||
// sanity checks
|
||||
assert(PinInfo.dir == PINDIR_OUTPUT);
|
||||
assert(PinInfo.pFilter != NULL);
|
||||
|
||||
// query filter info
|
||||
|
@ -219,57 +299,80 @@ CBDAPinControl_fnConstructor(
|
|||
// sanity check
|
||||
assert(FilterInfo.pGraph != NULL);
|
||||
|
||||
// get IEnumFilters interface
|
||||
hr = FilterInfo.pGraph->EnumFilters(&pEnumFilters);
|
||||
// get network provider interface
|
||||
hr = GetNetworkProviderFromGraph(FilterInfo.pGraph, &pNetworkProvider);
|
||||
|
||||
if (FAILED(hr))
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
//clean up
|
||||
FilterInfo.pGraph->Release();
|
||||
PinInfo.pFilter->Release();
|
||||
pObject->Release();
|
||||
pPin->Release();
|
||||
return hr;
|
||||
if (PinInfo.dir == PINDIR_OUTPUT)
|
||||
{
|
||||
// get connected pin handle
|
||||
hr = pPin->ConnectedTo(&pConnectedPin);
|
||||
if (SUCCEEDED(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
|
||||
FilterInfo.pGraph->Release();
|
||||
|
||||
// release IBaseFilter interface
|
||||
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
|
||||
pPin->Release();
|
||||
|
||||
|
@ -277,30 +380,23 @@ CBDAPinControl_fnConstructor(
|
|||
pObject->Release();
|
||||
|
||||
|
||||
if (pNetworkProvider == NULL)
|
||||
if (pNetworkProvider)
|
||||
{
|
||||
// no network provider interface in graph
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
#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;
|
||||
// release network provider
|
||||
pNetworkProvider->Release();
|
||||
}
|
||||
|
||||
return NOERROR;
|
||||
if (pConnectedPin)
|
||||
{
|
||||
// release connected pin
|
||||
pConnectedPin->Release();
|
||||
}
|
||||
|
||||
if (pUnknown)
|
||||
{
|
||||
// release filter
|
||||
pUnknown->Release();
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef PRECOMP_H__
|
||||
#define PRECOMP_H__
|
||||
|
||||
//#define BDAPLGIN_TRACE
|
||||
#define BDAPLGIN_TRACE
|
||||
#define BUILDING_KS
|
||||
#define _KSDDK_
|
||||
#include <dshow.h>
|
||||
|
@ -9,6 +9,7 @@
|
|||
#include <ks.h>
|
||||
#define __STREAMS__
|
||||
#include <ksproxy.h>
|
||||
#include <ksmedia.h>
|
||||
#include <stdio.h>
|
||||
#include <wchar.h>
|
||||
#include <tchar.h>
|
||||
|
@ -55,7 +56,6 @@ CBDAPinControl_fnConstructor(
|
|||
HRESULT
|
||||
WINAPI
|
||||
CControlNode_fnConstructor(
|
||||
HANDLE hFile,
|
||||
IBaseFilter * pFilter,
|
||||
ULONG NodeType,
|
||||
ULONG PinId,
|
||||
|
@ -67,7 +67,7 @@ CControlNode_fnConstructor(
|
|||
HRESULT
|
||||
WINAPI
|
||||
CBDAFrequencyFilter_fnConstructor(
|
||||
HANDLE hFile,
|
||||
IKsPropertySet * pProperty,
|
||||
ULONG NodeId,
|
||||
REFIID riid,
|
||||
LPVOID * ppv);
|
||||
|
@ -77,7 +77,7 @@ CBDAFrequencyFilter_fnConstructor(
|
|||
HRESULT
|
||||
WINAPI
|
||||
CBDASignalStatistics_fnConstructor(
|
||||
HANDLE hFile,
|
||||
IKsPropertySet * pProperty,
|
||||
ULONG NodeId,
|
||||
REFIID riid,
|
||||
LPVOID * ppv);
|
||||
|
@ -87,7 +87,7 @@ CBDASignalStatistics_fnConstructor(
|
|||
HRESULT
|
||||
WINAPI
|
||||
CBDALNBInfo_fnConstructor(
|
||||
HANDLE hFile,
|
||||
IKsPropertySet * pProperty,
|
||||
ULONG NodeId,
|
||||
REFIID riid,
|
||||
LPVOID * ppv);
|
||||
|
@ -96,9 +96,11 @@ CBDALNBInfo_fnConstructor(
|
|||
HRESULT
|
||||
WINAPI
|
||||
CBDADigitalDemodulator_fnConstructor(
|
||||
HANDLE hFile,
|
||||
IKsPropertySet * pProperty,
|
||||
ULONG NodeId,
|
||||
REFIID riid,
|
||||
LPVOID * ppv);
|
||||
|
||||
extern const GUID IID_IKsObject;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -9,8 +9,10 @@
|
|||
|
||||
#include "precomp.h"
|
||||
|
||||
#ifndef _MSC_VER
|
||||
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}};
|
||||
#endif
|
||||
|
||||
class CBDASignalStatistics : public IBDA_SignalStatistics
|
||||
{
|
||||
|
@ -45,12 +47,12 @@ public:
|
|||
HRESULT STDMETHODCALLTYPE put_SampleTime(LONG lmsSampleTime);
|
||||
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(){};
|
||||
|
||||
protected:
|
||||
LONG m_Ref;
|
||||
HANDLE m_hFile;
|
||||
IKsPropertySet * m_pProperty;
|
||||
ULONG m_NodeId;
|
||||
};
|
||||
|
||||
|
@ -75,7 +77,6 @@ CBDASignalStatistics::QueryInterface(
|
|||
reinterpret_cast<IBDA_SignalStatistics*>(*Output)->AddRef();
|
||||
return NOERROR;
|
||||
}
|
||||
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
|
@ -95,13 +96,13 @@ CBDASignalStatistics::get_SignalStrength(LONG *plDbStrength)
|
|||
ULONG BytesReturned;
|
||||
|
||||
// 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.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
|
||||
WCHAR Buffer[100];
|
||||
|
@ -128,13 +129,11 @@ CBDASignalStatistics::get_SignalQuality(LONG *plPercentQuality)
|
|||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
WCHAR Buffer[100];
|
||||
|
@ -162,13 +161,12 @@ CBDASignalStatistics::get_SignalPresent(BOOLEAN *pfPresent)
|
|||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
*pfPresent = Present;
|
||||
|
||||
|
@ -198,13 +196,12 @@ CBDASignalStatistics::get_SignalLocked(BOOLEAN *pfLocked)
|
|||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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;
|
||||
|
||||
#ifdef BDAPLGIN_TRACE
|
||||
|
@ -222,20 +219,17 @@ CBDASignalStatistics::put_SampleTime(LONG lmsSampleTime)
|
|||
{
|
||||
KSP_NODE Node;
|
||||
HRESULT hr;
|
||||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
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);
|
||||
#endif
|
||||
|
||||
|
@ -251,13 +245,11 @@ CBDASignalStatistics::get_SampleTime(LONG *plmsSampleTime)
|
|||
ULONG BytesReturned;
|
||||
|
||||
// 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.Reserved = 0;
|
||||
|
||||
// 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
|
||||
WCHAR Buffer[100];
|
||||
|
@ -271,13 +263,13 @@ CBDASignalStatistics::get_SampleTime(LONG *plmsSampleTime)
|
|||
HRESULT
|
||||
WINAPI
|
||||
CBDASignalStatistics_fnConstructor(
|
||||
HANDLE hFile,
|
||||
IKsPropertySet * pProperty,
|
||||
ULONG NodeId,
|
||||
REFIID riid,
|
||||
LPVOID * ppv)
|
||||
{
|
||||
// construct device control
|
||||
CBDASignalStatistics * handler = new CBDASignalStatistics(hFile, NodeId);
|
||||
CBDASignalStatistics * handler = new CBDASignalStatistics(pProperty, NodeId);
|
||||
|
||||
#ifdef BDAPLGIN_TRACE
|
||||
OutputDebugStringW(L"CBDASignalStatistics_fnConstructor\n");
|
||||
|
|
|
@ -140,7 +140,10 @@ CKsAllocator::SetProperties(
|
|||
SYSTEM_INFO SystemInfo;
|
||||
|
||||
EnterCriticalSection(&m_CriticalSection);
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsAllocator::SetProperties\n");
|
||||
#endif
|
||||
|
||||
if (!pRequest || !pActual)
|
||||
return E_POINTER;
|
||||
|
@ -216,7 +219,9 @@ CKsAllocator::Commit()
|
|||
//TODO integer overflow checks
|
||||
EnterCriticalSection(&m_CriticalSection);
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsAllocator::Commit\n");
|
||||
#endif
|
||||
|
||||
if (m_Mode == KsAllocatorMode_Kernel)
|
||||
{
|
||||
|
@ -301,7 +306,9 @@ CKsAllocator::Decommit()
|
|||
{
|
||||
EnterCriticalSection(&m_CriticalSection);
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsAllocator::Decommit\n");
|
||||
#endif
|
||||
|
||||
if (m_Mode == KsAllocatorMode_Kernel)
|
||||
{
|
||||
|
@ -340,7 +347,9 @@ CKsAllocator::GetBuffer(
|
|||
DWORD dwFlags)
|
||||
{
|
||||
IMediaSample * Sample = NULL;
|
||||
OutputDebugStringW(L"CKsAllocator::GetBuffer\n");
|
||||
|
||||
if (!m_Commited)
|
||||
return VFW_E_NOT_COMMITTED;
|
||||
|
||||
do
|
||||
{
|
||||
|
@ -390,7 +399,9 @@ CKsAllocator::ReleaseBuffer(
|
|||
{
|
||||
EnterCriticalSection(&m_CriticalSection);
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsAllocator::ReleaseBuffer\n");
|
||||
#endif
|
||||
|
||||
// media sample always 1 ref count in free list
|
||||
pBuffer->AddRef();
|
||||
|
@ -427,7 +438,10 @@ CKsAllocator::SetNotify(
|
|||
IMemAllocatorNotifyCallbackTemp *pNotify)
|
||||
{
|
||||
EnterCriticalSection(&m_CriticalSection);
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsAllocator::SetNotify\n");
|
||||
#endif
|
||||
|
||||
if (pNotify)
|
||||
pNotify->AddRef();
|
||||
|
@ -519,7 +533,9 @@ CKsAllocator::KsCreateAllocatorAndGetHandle(
|
|||
KSALLOCATOR_FRAMING AllocatorFraming;
|
||||
HANDLE hPin;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsAllocator::KsCreateAllocatorAndGetHandle\n");
|
||||
#endif
|
||||
|
||||
if (m_hAllocator)
|
||||
{
|
||||
|
@ -588,7 +604,9 @@ CKsAllocator_Constructor(
|
|||
REFIID riid,
|
||||
LPVOID * ppv)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsAllocator_Constructor\n");
|
||||
#endif
|
||||
|
||||
CKsAllocator * handler = new CKsAllocator();
|
||||
|
||||
|
|
|
@ -97,7 +97,9 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CKsBasicAudio::Stop()
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -105,7 +107,10 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CKsBasicAudio::Pause()
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -114,7 +119,10 @@ STDMETHODCALLTYPE
|
|||
CKsBasicAudio::Run(
|
||||
REFERENCE_TIME tStart)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -123,7 +131,9 @@ STDMETHODCALLTYPE
|
|||
CKsBasicAudio::SetSyncSource(
|
||||
IReferenceClock *pClock)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -131,7 +141,10 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CKsBasicAudio::NotifyGraphChange()
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -144,7 +157,10 @@ STDMETHODCALLTYPE
|
|||
CKsBasicAudio::GetTypeInfoCount(
|
||||
UINT *pctinfo)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -155,7 +171,9 @@ CKsBasicAudio::GetTypeInfo(
|
|||
LCID lcid,
|
||||
ITypeInfo **ppTInfo)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -168,7 +186,10 @@ CKsBasicAudio::GetIDsOfNames(
|
|||
LCID lcid,
|
||||
DISPID *rgDispId)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -184,7 +205,10 @@ CKsBasicAudio::Invoke(
|
|||
EXCEPINFO *pExcepInfo,
|
||||
UINT *puArgErr)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -197,7 +221,10 @@ STDMETHODCALLTYPE
|
|||
CKsBasicAudio::put_Volume(
|
||||
long lVolume)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -207,7 +234,10 @@ STDMETHODCALLTYPE
|
|||
CKsBasicAudio::get_Volume(
|
||||
long *plVolume)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -217,7 +247,10 @@ STDMETHODCALLTYPE
|
|||
CKsBasicAudio::put_Balance(
|
||||
long lBalance)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -227,7 +260,10 @@ STDMETHODCALLTYPE
|
|||
CKsBasicAudio::get_Balance(
|
||||
long *plBalance)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -238,7 +274,9 @@ CKsBasicAudio_Constructor(
|
|||
REFIID riid,
|
||||
LPVOID * ppv)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsBasicAudio_Constructor\n");
|
||||
#endif
|
||||
|
||||
CKsBasicAudio * handler = new CKsBasicAudio();
|
||||
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
const GUID KSCATEGORY_CLOCK = {0x53172480, 0x4791, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}};
|
||||
#endif
|
||||
|
||||
const GUID IID_IKsClockForwarder = {0x877e4352, 0x6fea, 0x11d0, {0xb8, 0x63, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1}};
|
||||
|
||||
DWORD WINAPI CKsClockForwarder_ThreadStartup(LPVOID lpParameter);
|
||||
|
||||
class CKsClockForwarder : public IDistributorNotify,
|
||||
|
@ -91,7 +93,8 @@ CKsClockForwarder::QueryInterface(
|
|||
reinterpret_cast<IUnknown*>(*Output)->AddRef();
|
||||
return NOERROR;
|
||||
}
|
||||
if (IsEqualGUID(refiid, IID_IKsObject))
|
||||
if (IsEqualGUID(refiid, IID_IKsObject) ||
|
||||
IsEqualGUID(refiid, IID_IKsClockForwarder))
|
||||
{
|
||||
*Output = (IKsObject*)(this);
|
||||
reinterpret_cast<IKsObject*>(*Output)->AddRef();
|
||||
|
@ -105,15 +108,6 @@ CKsClockForwarder::QueryInterface(
|
|||
return NOERROR;
|
||||
}
|
||||
|
||||
#if 0
|
||||
if (IsEqualGUID(refiid, IID_IKsClockForwarder))
|
||||
{
|
||||
*Output = PVOID(this);
|
||||
reinterpret_cast<IKsObject*>(*Output)->AddRef();
|
||||
return NOERROR;
|
||||
}
|
||||
#endif
|
||||
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
|
@ -126,8 +120,13 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
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)
|
||||
{
|
||||
// signal pending stop
|
||||
|
@ -166,7 +165,9 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CKsClockForwarder::Pause()
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugString("CKsClockForwarder::Pause\n");
|
||||
#endif
|
||||
|
||||
if (!m_hEvent)
|
||||
{
|
||||
|
@ -206,7 +207,9 @@ STDMETHODCALLTYPE
|
|||
CKsClockForwarder::Run(
|
||||
REFERENCE_TIME tStart)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugString("CKsClockForwarder::Run\n");
|
||||
#endif
|
||||
|
||||
m_Time = tStart;
|
||||
|
||||
|
@ -233,7 +236,9 @@ STDMETHODCALLTYPE
|
|||
CKsClockForwarder::SetSyncSource(
|
||||
IReferenceClock *pClock)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugString("CKsClockForwarder::SetSyncSource\n");
|
||||
#endif
|
||||
|
||||
if (pClock)
|
||||
pClock->AddRef();
|
||||
|
@ -250,9 +255,11 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CKsClockForwarder::NotifyGraphChange()
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugString("CKsClockForwarder::NotifyGraphChange\n");
|
||||
DebugBreak();
|
||||
return E_NOTIMPL;
|
||||
#endif
|
||||
|
||||
return NOERROR;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
|
@ -282,6 +289,12 @@ CKsClockForwarder::SetClockState(KSSTATE State)
|
|||
if (SUCCEEDED(hr))
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -330,14 +343,18 @@ CKsClockForwarder_Constructor(
|
|||
HRESULT hr;
|
||||
HANDLE handle;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsClockForwarder_Constructor\n");
|
||||
#endif
|
||||
|
||||
// open default clock
|
||||
hr = KsOpenDefaultDevice(KSCATEGORY_CLOCK, GENERIC_READ | GENERIC_WRITE, &handle);
|
||||
|
||||
if (hr != NOERROR)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugString("CKsClockForwarder_Constructor failed to open device\n");
|
||||
#endif
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
|
|
@ -102,7 +102,9 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CVPConfig::Stop()
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -110,7 +112,9 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CVPConfig::Pause()
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -119,7 +123,9 @@ STDMETHODCALLTYPE
|
|||
CVPConfig::Run(
|
||||
REFERENCE_TIME tStart)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -128,7 +134,9 @@ STDMETHODCALLTYPE
|
|||
CVPConfig::SetSyncSource(
|
||||
IReferenceClock *pClock)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -136,7 +144,9 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CVPConfig::NotifyGraphChange()
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -149,7 +159,9 @@ CVPConfig::GetConnectInfo(
|
|||
LPDWORD pdwNumConnectInfo,
|
||||
IN OUT LPDDVIDEOPORTCONNECT pddVPConnectInfo)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -158,7 +170,9 @@ STDMETHODCALLTYPE
|
|||
CVPConfig::SetConnectInfo(
|
||||
DWORD dwChosenEntry)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -167,7 +181,9 @@ STDMETHODCALLTYPE
|
|||
CVPConfig::GetVPDataInfo(
|
||||
LPAMVPDATAINFO pamvpDataInfo)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -177,7 +193,9 @@ CVPConfig::GetMaxPixelRate(
|
|||
LPAMVPSIZE pamvpSize,
|
||||
OUT LPDWORD pdwMaxPixelsPerSecond)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -187,7 +205,9 @@ CVPConfig::InformVPInputFormats(
|
|||
DWORD dwNumFormats,
|
||||
IN LPDDPIXELFORMAT pDDPixelFormats)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -197,7 +217,9 @@ CVPConfig::GetVideoFormats(
|
|||
LPDWORD pdwNumFormats,
|
||||
IN OUT LPDDPIXELFORMAT pddPixelFormats)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -206,7 +228,9 @@ STDMETHODCALLTYPE
|
|||
CVPConfig::SetVideoFormat(
|
||||
DWORD dwChosenEntry)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -214,7 +238,9 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CVPConfig::SetInvertPolarity()
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -223,7 +249,9 @@ STDMETHODCALLTYPE
|
|||
CVPConfig::GetOverlaySurface(
|
||||
LPDIRECTDRAWSURFACE* ppddOverlaySurface)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -232,7 +260,9 @@ STDMETHODCALLTYPE
|
|||
CVPConfig::SetDirectDrawKernelHandle(
|
||||
ULONG_PTR dwDDKernelHandle)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -241,7 +271,9 @@ STDMETHODCALLTYPE
|
|||
CVPConfig::SetVideoPortID(
|
||||
IN DWORD dwVideoPortID)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -252,7 +284,9 @@ CVPConfig::SetDDSurfaceKernelHandles(
|
|||
DWORD cHandles,
|
||||
IN ULONG_PTR *rgDDKernelHandles)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -264,7 +298,9 @@ CVPConfig::SetSurfaceParameters(
|
|||
IN DWORD dwXOrigin,
|
||||
IN DWORD dwYOrigin)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -277,7 +313,9 @@ STDMETHODCALLTYPE
|
|||
CVPConfig::IsVPDecimationAllowed(
|
||||
LPBOOL pbIsDecimationAllowed)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -286,13 +324,13 @@ STDMETHODCALLTYPE
|
|||
CVPConfig::SetScalingFactors(
|
||||
LPAMVPSIZE pamvpSize)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
CVPConfig_Constructor(
|
||||
|
@ -300,7 +338,9 @@ CVPConfig_Constructor(
|
|||
REFIID riid,
|
||||
LPVOID * ppv)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CVPConfig_Constructor\n");
|
||||
#endif
|
||||
|
||||
CVPConfig * handler = new CVPConfig();
|
||||
|
||||
|
|
|
@ -98,7 +98,9 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CVPVBIConfig::Stop()
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -106,7 +108,9 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CVPVBIConfig::Pause()
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -115,7 +119,9 @@ STDMETHODCALLTYPE
|
|||
CVPVBIConfig::Run(
|
||||
REFERENCE_TIME tStart)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -124,7 +130,9 @@ STDMETHODCALLTYPE
|
|||
CVPVBIConfig::SetSyncSource(
|
||||
IReferenceClock *pClock)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -132,7 +140,9 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CVPVBIConfig::NotifyGraphChange()
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -145,7 +155,9 @@ CVPVBIConfig::GetConnectInfo(
|
|||
LPDWORD pdwNumConnectInfo,
|
||||
IN OUT LPDDVIDEOPORTCONNECT pddVPConnectInfo)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -154,7 +166,9 @@ STDMETHODCALLTYPE
|
|||
CVPVBIConfig::SetConnectInfo(
|
||||
DWORD dwChosenEntry)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -163,7 +177,9 @@ STDMETHODCALLTYPE
|
|||
CVPVBIConfig::GetVPDataInfo(
|
||||
LPAMVPDATAINFO pamvpDataInfo)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -173,7 +189,9 @@ CVPVBIConfig::GetMaxPixelRate(
|
|||
LPAMVPSIZE pamvpSize,
|
||||
OUT LPDWORD pdwMaxPixelsPerSecond)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -183,7 +201,9 @@ CVPVBIConfig::InformVPInputFormats(
|
|||
DWORD dwNumFormats,
|
||||
IN LPDDPIXELFORMAT pDDPixelFormats)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -193,7 +213,9 @@ CVPVBIConfig::GetVideoFormats(
|
|||
LPDWORD pdwNumFormats,
|
||||
IN OUT LPDDPIXELFORMAT pddPixelFormats)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -202,7 +224,9 @@ STDMETHODCALLTYPE
|
|||
CVPVBIConfig::SetVideoFormat(
|
||||
DWORD dwChosenEntry)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -210,7 +234,9 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CVPVBIConfig::SetInvertPolarity()
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -219,7 +245,9 @@ STDMETHODCALLTYPE
|
|||
CVPVBIConfig::GetOverlaySurface(
|
||||
LPDIRECTDRAWSURFACE* ppddOverlaySurface)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -228,7 +256,9 @@ STDMETHODCALLTYPE
|
|||
CVPVBIConfig::SetDirectDrawKernelHandle(
|
||||
ULONG_PTR dwDDKernelHandle)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -237,7 +267,9 @@ STDMETHODCALLTYPE
|
|||
CVPVBIConfig::SetVideoPortID(
|
||||
IN DWORD dwVideoPortID)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -248,7 +280,9 @@ CVPVBIConfig::SetDDSurfaceKernelHandles(
|
|||
DWORD cHandles,
|
||||
IN ULONG_PTR *rgDDKernelHandles)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -260,7 +294,9 @@ CVPVBIConfig::SetSurfaceParameters(
|
|||
IN DWORD dwXOrigin,
|
||||
IN DWORD dwYOrigin)
|
||||
{
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"UNIMPLEMENTED\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -272,7 +308,9 @@ CVPVBIConfig_Constructor(
|
|||
REFIID riid,
|
||||
LPVOID * ppv)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CVPVBIConfig_Constructor\n");
|
||||
#endif
|
||||
|
||||
CVPVBIConfig * handler = new CVPVBIConfig();
|
||||
|
||||
|
|
|
@ -103,7 +103,9 @@ CKsDataTypeHandler::KsIsMediaTypeInRanges(
|
|||
ULONG Index;
|
||||
HRESULT hr = S_FALSE;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsDataTypeHandler::KsIsMediaTypeInRanges\n");
|
||||
#endif
|
||||
|
||||
DataList = (PKSMULTIPLE_ITEM)DataRanges;
|
||||
DataRange = (PKSDATARANGE)(DataList + 1);
|
||||
|
@ -187,7 +189,9 @@ STDMETHODCALLTYPE
|
|||
CKsDataTypeHandler::KsSetMediaType(
|
||||
IN const AM_MEDIA_TYPE* AmMediaType)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugString("CKsDataTypeHandler::KsSetMediaType\n");
|
||||
#endif
|
||||
|
||||
if (m_Type)
|
||||
{
|
||||
|
@ -228,7 +232,10 @@ CKsDataTypeHandler_Constructor (
|
|||
REFIID riid,
|
||||
LPVOID * ppv)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsDataTypeHandler_Constructor\n");
|
||||
#endif
|
||||
|
||||
CKsDataTypeHandler * handler = new CKsDataTypeHandler();
|
||||
|
||||
if (!handler)
|
||||
|
|
|
@ -64,13 +64,6 @@ CEnumMediaTypes::QueryInterface(
|
|||
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;
|
||||
}
|
||||
|
||||
|
@ -171,7 +164,9 @@ STDMETHODCALLTYPE
|
|||
CEnumMediaTypes::Clone(
|
||||
IEnumMediaTypes **ppEnum)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CEnumMediaTypes::Clone : NotImplemented\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -189,7 +184,7 @@ CEnumMediaTypes_fnConstructor(
|
|||
WCHAR Buffer[MAX_PATH];
|
||||
LPOLESTR 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);
|
||||
#endif
|
||||
|
||||
|
|
|
@ -132,7 +132,10 @@ STDMETHODCALLTYPE
|
|||
CEnumPins::Clone(
|
||||
IEnumPins **ppEnum)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CEnumPins::Clone : NotImplemented\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
|
|
@ -62,6 +62,8 @@ class CInputPin : public IPin,
|
|||
public ISpecifyPropertyPages
|
||||
{
|
||||
public:
|
||||
typedef std::vector<IUnknown *>ProxyPluginVector;
|
||||
|
||||
STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
|
||||
|
||||
STDMETHODIMP_(ULONG) AddRef()
|
||||
|
@ -170,14 +172,15 @@ public:
|
|||
HRESULT STDMETHODCALLTYPE CheckFormat(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);
|
||||
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(){};
|
||||
|
||||
protected:
|
||||
LONG m_Ref;
|
||||
IBaseFilter * m_ParentFilter;
|
||||
LPCWSTR m_PinName;
|
||||
HANDLE m_hFilter;
|
||||
HANDLE m_hPin;
|
||||
ULONG m_PinId;
|
||||
IMemAllocator * m_MemAllocator;
|
||||
|
@ -196,17 +199,16 @@ protected:
|
|||
LPWSTR m_FilterName;
|
||||
FRAMING_PROP m_FramingProp[4];
|
||||
PKSALLOCATOR_FRAMING_EX m_FramingEx[4];
|
||||
ProxyPluginVector m_Plugins;
|
||||
};
|
||||
|
||||
CInputPin::CInputPin(
|
||||
IBaseFilter * ParentFilter,
|
||||
IBaseFilter * ParentFilter,
|
||||
LPCWSTR PinName,
|
||||
HANDLE hFilter,
|
||||
ULONG PinId,
|
||||
KSPIN_COMMUNICATION Communication) : m_Ref(0),
|
||||
m_ParentFilter(ParentFilter),
|
||||
m_PinName(PinName),
|
||||
m_hFilter(hFilter),
|
||||
m_hPin(INVALID_HANDLE_VALUE),
|
||||
m_PinId(PinId),
|
||||
m_MemAllocator(0),
|
||||
|
@ -218,13 +220,27 @@ CInputPin::CInputPin(
|
|||
m_KsAllocatorEx(0),
|
||||
m_PipeAllocatorFlag(0),
|
||||
m_bPinBusCacheInitialized(0),
|
||||
m_FilterName(0)
|
||||
m_FilterName(0),
|
||||
m_Plugins()
|
||||
{
|
||||
ZeroMemory(m_FramingProp, sizeof(m_FramingProp));
|
||||
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));
|
||||
HRESULT hr = KsGetMediaType(0, &m_MediaFormat, m_hFilter, m_PinId);
|
||||
hr = KsGetMediaType(0, &m_MediaFormat, hFilter, m_PinId);
|
||||
assert(hr == S_OK);
|
||||
}
|
||||
|
||||
|
@ -346,7 +362,10 @@ CInputPin::Notify(
|
|||
IBaseFilter *pSelf,
|
||||
Quality q)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::Notify NotImplemented\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -355,7 +374,10 @@ STDMETHODCALLTYPE
|
|||
CInputPin::SetSink(
|
||||
IQualityControl *piqc)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::SetSink NotImplemented\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -368,7 +390,10 @@ STDMETHODCALLTYPE
|
|||
CInputPin::KsAddAggregate(
|
||||
IN REFGUID AggregateClass)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::KsAddAggregate NotImplemented\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -377,7 +402,10 @@ STDMETHODCALLTYPE
|
|||
CInputPin::KsRemoveAggregate(
|
||||
REFGUID AggregateClass)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::KsRemoveAggregate NotImplemented\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -401,7 +429,10 @@ CInputPin::Backout(
|
|||
IPin *ppinOut,
|
||||
IGraphBuilder *pGraph)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::Backout\n");
|
||||
#endif
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
@ -414,7 +445,10 @@ STDMETHODCALLTYPE
|
|||
CInputPin::KsPinFactory(
|
||||
ULONG* PinFactory)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::KsPinFactory\n");
|
||||
#endif
|
||||
|
||||
*PinFactory = m_PinId;
|
||||
return S_OK;
|
||||
}
|
||||
|
@ -590,7 +624,10 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CInputPin::GetAllocator(IMemAllocator **ppAllocator)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::GetAllocator\n");
|
||||
#endif
|
||||
|
||||
return VFW_E_NO_ALLOCATOR;
|
||||
}
|
||||
|
||||
|
@ -598,13 +635,16 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CInputPin::NotifyAllocator(IMemAllocator *pAllocator, BOOL bReadOnly)
|
||||
{
|
||||
WCHAR Buffer[100];
|
||||
HRESULT hr;
|
||||
ALLOCATOR_PROPERTIES 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);
|
||||
OutputDebugStringW(Buffer);
|
||||
#endif
|
||||
|
||||
if (pAllocator)
|
||||
{
|
||||
|
@ -645,9 +685,11 @@ CInputPin::GetAllocatorRequirements(ALLOCATOR_PROPERTIES *pProps)
|
|||
else
|
||||
hr = E_NOTIMPL;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
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);
|
||||
OutputDebugStringW(Buffer);
|
||||
#endif
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
@ -656,8 +698,11 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CInputPin::Receive(IMediaSample *pSample)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::Receive NotImplemented\n");
|
||||
DebugBreak();
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -665,8 +710,11 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CInputPin::ReceiveMultiple(IMediaSample **pSamples, long nSamples, long *nSamplesProcessed)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::ReceiveMultiple NotImplemented\n");
|
||||
DebugBreak();
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -674,8 +722,11 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CInputPin::ReceiveCanBlock( void)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::ReceiveCanBlock NotImplemented\n");
|
||||
DebugBreak();
|
||||
#endif
|
||||
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
|
@ -688,7 +739,22 @@ STDMETHODCALLTYPE
|
|||
CInputPin::KsQueryMediums(
|
||||
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
|
||||
|
@ -696,7 +762,22 @@ STDMETHODCALLTYPE
|
|||
CInputPin::KsQueryInterfaces(
|
||||
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
|
||||
|
@ -838,7 +919,10 @@ CInputPin::KsQualityNotify(
|
|||
ULONG Proportion,
|
||||
REFERENCE_TIME TimeDelta)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::KsQualityNotify NotImplemented\n");
|
||||
#endif
|
||||
|
||||
DebugBreak();
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
@ -853,7 +937,9 @@ CInputPin::KsNotifyError(
|
|||
IMediaSample* Sample,
|
||||
HRESULT hr)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::KsNotifyError NotImplemented\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -1026,8 +1112,10 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CInputPin::Connect(IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::Connect NotImplemented\n");
|
||||
DebugBreak();
|
||||
#endif
|
||||
return NOERROR;
|
||||
}
|
||||
|
||||
|
@ -1078,7 +1166,10 @@ CInputPin::Disconnect( void)
|
|||
m_Pin->Release();
|
||||
m_Pin = NULL;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::Disconnect\n");
|
||||
#endif
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
HRESULT
|
||||
|
@ -1106,8 +1197,11 @@ CInputPin::ConnectionMediaType(AM_MEDIA_TYPE *pmt)
|
|||
if (!m_Pin)
|
||||
return VFW_E_NOT_CONNECTED;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::ConnectionMediaType NotImplemented\n");
|
||||
DebugBreak();
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
HRESULT
|
||||
|
@ -1159,9 +1253,23 @@ CInputPin::EnumMediaTypes(IEnumMediaTypes **ppEnum)
|
|||
HRESULT hr;
|
||||
ULONG MediaTypeCount = 0, Index;
|
||||
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
|
||||
hr = KsGetMediaTypeCount(m_hFilter, m_PinId, &MediaTypeCount);
|
||||
hr = KsGetMediaTypeCount(hFilter, m_PinId, &MediaTypeCount);
|
||||
if (FAILED(hr) || !MediaTypeCount)
|
||||
return hr;
|
||||
|
||||
|
@ -1179,7 +1287,7 @@ CInputPin::EnumMediaTypes(IEnumMediaTypes **ppEnum)
|
|||
for(Index = 0; Index < MediaTypeCount; Index++)
|
||||
{
|
||||
// get media type
|
||||
hr = KsGetMediaType(Index, &MediaTypes[Index], m_hFilter, m_PinId);
|
||||
hr = KsGetMediaType(Index, &MediaTypes[Index], hFilter, m_PinId);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
// failed
|
||||
|
@ -1195,35 +1303,45 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CInputPin::QueryInternalConnections(IPin **apPin, ULONG *nPin)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::QueryInternalConnections NotImplemented\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
HRESULT
|
||||
STDMETHODCALLTYPE
|
||||
CInputPin::EndOfStream( void)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::EndOfStream NotImplemented\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
HRESULT
|
||||
STDMETHODCALLTYPE
|
||||
CInputPin::BeginFlush( void)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::BeginFlush NotImplemented\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
HRESULT
|
||||
STDMETHODCALLTYPE
|
||||
CInputPin::EndFlush( void)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::EndFlush NotImplemented\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
HRESULT
|
||||
STDMETHODCALLTYPE
|
||||
CInputPin::NewSegment(REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::NewSegment NotImplemented\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -1237,11 +1355,25 @@ CInputPin::CheckFormat(
|
|||
PKSMULTIPLE_ITEM MultipleItem;
|
||||
PKSDATAFORMAT DataFormat;
|
||||
HRESULT hr;
|
||||
IKsObject * KsObjectParent;
|
||||
HANDLE hFilter;
|
||||
|
||||
if (!pmt)
|
||||
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))
|
||||
return S_FALSE;
|
||||
|
||||
|
@ -1254,7 +1386,9 @@ CInputPin::CheckFormat(
|
|||
{
|
||||
// format is supported
|
||||
CoTaskMemFree(MultipleItem);
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::CheckFormat format OK\n");
|
||||
#endif
|
||||
return S_OK;
|
||||
}
|
||||
DataFormat = (PKSDATAFORMAT)((ULONG_PTR)DataFormat + DataFormat->FormatSize);
|
||||
|
@ -1321,7 +1455,9 @@ CInputPin::CreatePin(
|
|||
if (FAILED(hr))
|
||||
{
|
||||
// failed to load interface handler plugin
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::CreatePin failed to load InterfaceHandlerPlugin\n");
|
||||
#endif
|
||||
CoTaskMemFree(MediumList);
|
||||
CoTaskMemFree(InterfaceList);
|
||||
|
||||
|
@ -1333,7 +1469,9 @@ CInputPin::CreatePin(
|
|||
if (FAILED(hr))
|
||||
{
|
||||
// failed to load interface handler plugin
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CInputPin::CreatePin failed to initialize InterfaceHandlerPlugin\n");
|
||||
#endif
|
||||
InterfaceHandler->Release();
|
||||
CoTaskMemFree(MediumList);
|
||||
CoTaskMemFree(InterfaceList);
|
||||
|
@ -1354,10 +1492,12 @@ CInputPin::CreatePin(
|
|||
}
|
||||
else
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
WCHAR Buffer[100];
|
||||
swprintf(Buffer, L"CInputPin::CreatePin unexpected communication %u %s\n", m_Communication, m_PinName);
|
||||
OutputDebugStringW(Buffer);
|
||||
DebugBreak();
|
||||
#endif
|
||||
hr = E_FAIL;
|
||||
}
|
||||
|
||||
|
@ -1379,6 +1519,23 @@ CInputPin::CreatePinHandle(
|
|||
PKSDATAFORMAT DataFormat;
|
||||
ULONG Length;
|
||||
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)
|
||||
{
|
||||
|
@ -1427,7 +1584,7 @@ CInputPin::CreatePinHandle(
|
|||
}
|
||||
|
||||
// create pin
|
||||
hr = KsCreatePin(m_hFilter, PinConnect, GENERIC_WRITE, &m_hPin);
|
||||
hr = KsCreatePin(hFilter, PinConnect, GENERIC_WRITE, &m_hPin);
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
|
@ -1436,16 +1593,19 @@ CInputPin::CreatePinHandle(
|
|||
CopyMemory(&m_Interface, Interface, sizeof(KSPIN_INTERFACE));
|
||||
CopyMemory(&m_MediaFormat, pmt, sizeof(AM_MEDIA_TYPE));
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
LPOLESTR pMajor, pSub, pFormat;
|
||||
StringFromIID(m_MediaFormat.majortype, &pMajor);
|
||||
StringFromIID(m_MediaFormat.subtype , &pSub);
|
||||
StringFromIID(m_MediaFormat.formattype, &pFormat);
|
||||
|
||||
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);
|
||||
CoTaskMemFree(pMajor);
|
||||
CoTaskMemFree(pSub);
|
||||
CoTaskMemFree(pFormat);
|
||||
OutputDebugStringW(Buffer);
|
||||
#endif
|
||||
|
||||
if (pmt->cbFormat)
|
||||
{
|
||||
|
@ -1460,6 +1620,33 @@ CInputPin::CreatePinHandle(
|
|||
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
|
||||
// connect pin pipes
|
||||
|
||||
|
@ -1471,6 +1658,137 @@ CInputPin::CreatePinHandle(
|
|||
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
|
||||
WINAPI
|
||||
CInputPin_Constructor(
|
||||
|
@ -1482,7 +1800,7 @@ CInputPin_Constructor(
|
|||
REFIID riid,
|
||||
LPVOID * ppv)
|
||||
{
|
||||
CInputPin * handler = new CInputPin(ParentFilter, PinName, hFilter, PinId, Communication);
|
||||
CInputPin * handler = new CInputPin(ParentFilter, PinName, PinId, Communication);
|
||||
|
||||
if (!handler)
|
||||
return E_OUTOFMEMORY;
|
||||
|
|
|
@ -285,10 +285,11 @@ CKsInterfaceHandler::KsProcessMediaSamples(
|
|||
if (SampleList[Index]->IsSyncPoint() == S_OK)
|
||||
Properties.dwSampleFlags |= AM_SAMPLE_SPLICEPOINT;
|
||||
}
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
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);
|
||||
//OutputDebugStringW(Buffer);
|
||||
OutputDebugStringW(Buffer);
|
||||
#endif
|
||||
|
||||
CurStreamHeader->Size = sizeof(KSSTREAM_HEADER) + ExtendedSize;
|
||||
CurStreamHeader->PresentationTime.Denominator = 1;
|
||||
|
@ -479,7 +480,9 @@ CKsInterfaceHandler_Constructor(
|
|||
REFIID riid,
|
||||
LPVOID * ppv)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsInterfaceHandler_Constructor\n");
|
||||
#endif
|
||||
|
||||
CKsInterfaceHandler * handler = new CKsInterfaceHandler();
|
||||
|
||||
|
|
|
@ -116,8 +116,6 @@ CMediaSample::QueryInterface(
|
|||
}
|
||||
if (IsEqualGUID(refiid, IID_IMediaSample2))
|
||||
{
|
||||
|
||||
OutputDebugStringW(L"CMediaSample::QueryInterface requested IMediaSample2 interface\n");
|
||||
#if 0
|
||||
*Output = (IMediaSample2*)(this);
|
||||
reinterpret_cast<IMediaSample2*>(*Output)->AddRef();
|
||||
|
@ -267,8 +265,6 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CMediaSample::GetMediaType(AM_MEDIA_TYPE **ppMediaType)
|
||||
{
|
||||
OutputDebugStringW(L"CMediaSample::GetMediaType\n");
|
||||
|
||||
if (!m_MediaType)
|
||||
{
|
||||
*ppMediaType = NULL;
|
||||
|
@ -352,7 +348,9 @@ CMediaSample_Constructor(
|
|||
REFIID riid,
|
||||
LPVOID * ppv)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CMediaSample_Constructor\n");
|
||||
#endif
|
||||
|
||||
CMediaSample * handler = new CMediaSample(Allocator, pBuffer, BufferSize);
|
||||
|
||||
|
|
|
@ -124,7 +124,9 @@ CKsNode_Constructor(
|
|||
HANDLE handle;
|
||||
KSNODE_CREATE NodeCreate;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsNode_Constructor\n");
|
||||
#endif
|
||||
|
||||
//setup request
|
||||
NodeCreate.CreateFlags = 0;
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -3,6 +3,7 @@
|
|||
#define _FORCENAMELESSUNION
|
||||
#define BUILDING_KS
|
||||
#define _KSDDK_
|
||||
//#define KSPROXY_TRACE
|
||||
#include <dshow.h>
|
||||
//#include <streams.h>
|
||||
#include <ks.h>
|
||||
|
|
|
@ -63,7 +63,7 @@ public:
|
|||
InterlockedDecrement(&m_Ref);
|
||||
if (!m_Ref)
|
||||
{
|
||||
delete this;
|
||||
//delete this;
|
||||
return 0;
|
||||
}
|
||||
return m_Ref;
|
||||
|
@ -171,7 +171,7 @@ public:
|
|||
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()
|
||||
{
|
||||
if (m_hDevice)
|
||||
|
@ -203,8 +203,23 @@ protected:
|
|||
LPWSTR m_DevicePath;
|
||||
CLSID m_DeviceInterfaceGUID;
|
||||
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
|
||||
STDMETHODCALLTYPE
|
||||
CKsProxy::QueryInterface(
|
||||
|
@ -332,24 +347,26 @@ CKsProxy::QueryInterface(
|
|||
HRESULT hr = m_Plugins[Index]->QueryInterface(refiid, Output);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
WCHAR Buffer[100];
|
||||
LPOLESTR lpstr;
|
||||
StringFromCLSID(refiid, &lpstr);
|
||||
swprintf(Buffer, L"CKsProxy::QueryInterface plugin %lu supports interface %s\n", Index, lpstr);
|
||||
OutputDebugStringW(Buffer);
|
||||
CoTaskMemFree(lpstr);
|
||||
#endif
|
||||
return hr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
WCHAR Buffer[MAX_PATH];
|
||||
LPOLESTR lpstr;
|
||||
StringFromCLSID(refiid, &lpstr);
|
||||
swprintf(Buffer, L"CKsProxy::QueryInterface: NoInterface for %s !!!\n", lpstr);
|
||||
OutputDebugStringW(Buffer);
|
||||
CoTaskMemFree(lpstr);
|
||||
|
||||
#endif
|
||||
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
@ -362,7 +379,9 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CKsProxy::GetPages(CAUUID *pPages)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::GetPages NotImplemented\n");
|
||||
#endif
|
||||
|
||||
if (!pPages)
|
||||
return E_POINTER;
|
||||
|
@ -478,7 +497,10 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::KsGetTime(
|
||||
LONGLONG* Time)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::KsGetTime\n");
|
||||
#endif
|
||||
|
||||
return PerformClockProperty(KSPROPERTY_CLOCK_TIME, KSPROPERTY_TYPE_GET, (PVOID)Time, sizeof(LONGLONG));
|
||||
}
|
||||
|
||||
|
@ -487,7 +509,10 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::KsSetTime(
|
||||
LONGLONG Time)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::KsSetTime\n");
|
||||
#endif
|
||||
|
||||
return PerformClockProperty(KSPROPERTY_CLOCK_TIME, KSPROPERTY_TYPE_SET, (PVOID)&Time, sizeof(LONGLONG));
|
||||
}
|
||||
|
||||
|
@ -496,7 +521,10 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::KsGetPhysicalTime(
|
||||
LONGLONG* Time)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::KsGetPhysicalTime\n");
|
||||
#endif
|
||||
|
||||
return PerformClockProperty(KSPROPERTY_CLOCK_PHYSICALTIME, KSPROPERTY_TYPE_GET, (PVOID)Time, sizeof(LONGLONG));
|
||||
}
|
||||
|
||||
|
@ -505,7 +533,10 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::KsSetPhysicalTime(
|
||||
LONGLONG Time)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::KsSetPhysicalTime\n");
|
||||
#endif
|
||||
|
||||
return PerformClockProperty(KSPROPERTY_CLOCK_PHYSICALTIME, KSPROPERTY_TYPE_SET, (PVOID)&Time, sizeof(LONGLONG));
|
||||
}
|
||||
|
||||
|
@ -514,7 +545,10 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::KsGetCorrelatedTime(
|
||||
KSCORRELATED_TIME* CorrelatedTime)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::KsGetCorrelatedTime\n");
|
||||
#endif
|
||||
|
||||
return PerformClockProperty(KSPROPERTY_CLOCK_CORRELATEDTIME, KSPROPERTY_TYPE_GET, (PVOID)CorrelatedTime, sizeof(KSCORRELATED_TIME));
|
||||
}
|
||||
|
||||
|
@ -523,7 +557,9 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::KsSetCorrelatedTime(
|
||||
KSCORRELATED_TIME* CorrelatedTime)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::KsSetCorrelatedTime\n");
|
||||
#endif
|
||||
return PerformClockProperty(KSPROPERTY_CLOCK_CORRELATEDTIME, KSPROPERTY_TYPE_SET, (PVOID)CorrelatedTime, sizeof(KSCORRELATED_TIME));
|
||||
}
|
||||
|
||||
|
@ -532,7 +568,9 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::KsGetCorrelatedPhysicalTime(
|
||||
KSCORRELATED_TIME* CorrelatedTime)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::KsGetCorrelatedPhysicalTime\n");
|
||||
#endif
|
||||
return PerformClockProperty(KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME, KSPROPERTY_TYPE_GET, (PVOID)CorrelatedTime, sizeof(KSCORRELATED_TIME));
|
||||
}
|
||||
|
||||
|
@ -541,7 +579,10 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::KsSetCorrelatedPhysicalTime(
|
||||
KSCORRELATED_TIME* CorrelatedTime)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::KsSetCorrelatedPhysicalTime\n");
|
||||
#endif
|
||||
|
||||
return PerformClockProperty(KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME, KSPROPERTY_TYPE_SET, (PVOID)CorrelatedTime, sizeof(KSCORRELATED_TIME));
|
||||
}
|
||||
|
||||
|
@ -550,7 +591,9 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::KsGetResolution(
|
||||
KSRESOLUTION* Resolution)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::KsGetResolution\n");
|
||||
#endif
|
||||
return PerformClockProperty(KSPROPERTY_CLOCK_RESOLUTION, KSPROPERTY_TYPE_GET, (PVOID)Resolution, sizeof(KSRESOLUTION));
|
||||
}
|
||||
|
||||
|
@ -559,7 +602,9 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::KsGetState(
|
||||
KSSTATE* State)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::KsGetState\n");
|
||||
#endif
|
||||
return PerformClockProperty(KSPROPERTY_CLOCK_STATE, KSPROPERTY_TYPE_GET, (PVOID)State, sizeof(KSSTATE));
|
||||
}
|
||||
|
||||
|
@ -575,7 +620,9 @@ CKsProxy::GetTime(
|
|||
KSPROPERTY Property;
|
||||
ULONG BytesReturned;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::GetTime\n");
|
||||
#endif
|
||||
|
||||
if (!pTime)
|
||||
return E_POINTER;
|
||||
|
@ -620,7 +667,9 @@ CKsProxy::AdviseTime(
|
|||
ULONG BytesReturned;
|
||||
PKSEVENT_TIME_MARK Event;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::AdviseTime\n");
|
||||
#endif
|
||||
|
||||
//
|
||||
//FIXME locks
|
||||
|
@ -686,7 +735,9 @@ CKsProxy::AdvisePeriodic(
|
|||
ULONG BytesReturned;
|
||||
PKSEVENT_TIME_INTERVAL Event;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::AdvisePeriodic\n");
|
||||
#endif
|
||||
|
||||
//
|
||||
//FIXME locks
|
||||
|
@ -748,7 +799,9 @@ CKsProxy::Unadvise(
|
|||
HRESULT hr;
|
||||
ULONG BytesReturned;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::Unadvise\n");
|
||||
#endif
|
||||
|
||||
if (m_hClock)
|
||||
{
|
||||
|
@ -786,7 +839,10 @@ CKsProxy::GetCapabilities(
|
|||
Property.Id = KSPROPERTY_MEDIASEEKING_CAPABILITIES;
|
||||
Property.Flags = KSPROPERTY_TYPE_GET;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::GetCapabilities\n");
|
||||
#endif
|
||||
|
||||
|
||||
if (!pCapabilities)
|
||||
return E_POINTER;
|
||||
|
@ -836,7 +892,9 @@ CKsProxy::CheckCapabilities(
|
|||
DWORD Capabilities;
|
||||
HRESULT hr;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::CheckCapabilities\n");
|
||||
#endif
|
||||
|
||||
if (!pCapabilities)
|
||||
return E_POINTER;
|
||||
|
@ -914,11 +972,13 @@ CKsProxy::IsFormatSupported(
|
|||
ULONG Index;
|
||||
HRESULT hr = S_FALSE;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
WCHAR Buffer[100];
|
||||
LPOLESTR pstr;
|
||||
StringFromCLSID(*pFormat, &pstr);
|
||||
swprintf(Buffer, L"CKsProxy::IsFormatSupported %s\n",pstr);
|
||||
OutputDebugStringW(Buffer);
|
||||
#endif
|
||||
|
||||
if (!pFormat)
|
||||
return E_POINTER;
|
||||
|
@ -927,8 +987,10 @@ CKsProxy::IsFormatSupported(
|
|||
hr = GetMediaSeekingFormats(&FormatList);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
swprintf(Buffer, L"CKsProxy::IsFormatSupported NumFormat %lu\n",FormatList->Count);
|
||||
OutputDebugStringW(Buffer);
|
||||
#endif
|
||||
|
||||
//iterate through format list
|
||||
pGuid = (LPGUID)(FormatList + 1);
|
||||
|
@ -961,7 +1023,9 @@ CKsProxy::IsFormatSupported(
|
|||
{
|
||||
// plugin does not support interface
|
||||
hr = S_FALSE;
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::IsFormatSupported plugin does not support IMediaSeeking interface\n");
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -986,7 +1050,9 @@ CKsProxy::QueryPreferredFormat(
|
|||
HRESULT hr;
|
||||
ULONG Index;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::QueryPreferredFormat\n");
|
||||
#endif
|
||||
|
||||
if (!pFormat)
|
||||
return E_POINTER;
|
||||
|
@ -1046,7 +1112,9 @@ CKsProxy::GetTimeFormat(
|
|||
Property.Id = KSPROPERTY_MEDIASEEKING_TIMEFORMAT;
|
||||
Property.Flags = KSPROPERTY_TYPE_GET;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::GetTimeFormat\n");
|
||||
#endif
|
||||
|
||||
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))
|
||||
|
@ -1086,7 +1154,9 @@ CKsProxy::IsUsingTimeFormat(
|
|||
{
|
||||
GUID Format;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::IsUsingTimeFormat\n");
|
||||
#endif
|
||||
|
||||
if (FAILED(QueryPreferredFormat(&Format)))
|
||||
return S_FALSE;
|
||||
|
@ -1110,7 +1180,9 @@ CKsProxy::SetTimeFormat(
|
|||
Property.Id = KSPROPERTY_MEDIASEEKING_TIMEFORMAT;
|
||||
Property.Flags = KSPROPERTY_TYPE_SET;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::SetTimeFormat\n");
|
||||
#endif
|
||||
|
||||
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))
|
||||
|
@ -1158,7 +1230,9 @@ CKsProxy::GetDuration(
|
|||
Property.Id = KSPROPERTY_MEDIASEEKING_DURATION;
|
||||
Property.Flags = KSPROPERTY_TYPE_GET;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::GetDuration\n");
|
||||
#endif
|
||||
|
||||
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))
|
||||
|
@ -1204,7 +1278,9 @@ CKsProxy::GetStopPosition(
|
|||
Property.Id = KSPROPERTY_MEDIASEEKING_STOPPOSITION;
|
||||
Property.Flags = KSPROPERTY_TYPE_GET;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::GetStopPosition\n");
|
||||
#endif
|
||||
|
||||
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))
|
||||
|
@ -1250,7 +1326,9 @@ CKsProxy::GetCurrentPosition(
|
|||
Property.Id = KSPROPERTY_MEDIASEEKING_POSITION;
|
||||
Property.Flags = KSPROPERTY_TYPE_GET;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::GetCurrentPosition\n");
|
||||
#endif
|
||||
|
||||
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))
|
||||
|
@ -1300,7 +1378,9 @@ CKsProxy::ConvertTimeFormat(
|
|||
Property.Property.Id = KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT;
|
||||
Property.Property.Flags = KSPROPERTY_TYPE_GET;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::ConvertTimeFormat\n");
|
||||
#endif
|
||||
|
||||
if (!pTargetFormat)
|
||||
{
|
||||
|
@ -1383,7 +1463,9 @@ CKsProxy::SetPositions(
|
|||
Positions.Stop = *pStop;
|
||||
Positions.StopFlags = (KS_SEEKING_FLAGS)dwStopFlags;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::SetPositions\n");
|
||||
#endif
|
||||
|
||||
hr = KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)&Positions, sizeof(KSPROPERTY_POSITIONS), &BytesReturned);
|
||||
if (SUCCEEDED(hr))
|
||||
|
@ -1444,7 +1526,9 @@ CKsProxy::GetPositions(
|
|||
{
|
||||
HRESULT hr;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::GetPositions\n");
|
||||
#endif
|
||||
|
||||
hr = GetCurrentPosition(pCurrent);
|
||||
if (SUCCEEDED(hr))
|
||||
|
@ -1468,7 +1552,9 @@ CKsProxy::GetAvailable(
|
|||
Property.Id = KSPROPERTY_MEDIASEEKING_AVAILABLE;
|
||||
Property.Flags = KSPROPERTY_TYPE_GET;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::GetAvailable\n");
|
||||
#endif
|
||||
|
||||
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))
|
||||
|
@ -1512,7 +1598,9 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::SetRate(
|
||||
double dRate)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::SetRate\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -1521,7 +1609,9 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::GetRate(
|
||||
double *pdRate)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::GetRate\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -1538,7 +1628,9 @@ CKsProxy::GetPreroll(
|
|||
Property.Id = KSPROPERTY_MEDIASEEKING_PREROLL;
|
||||
Property.Flags = KSPROPERTY_TYPE_GET;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::GetPreroll\n");
|
||||
#endif
|
||||
|
||||
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))
|
||||
|
@ -1584,7 +1676,7 @@ CKsProxy::GetMiscFlags()
|
|||
HRESULT hr;
|
||||
PIN_DIRECTION PinDirection;
|
||||
KSPIN_COMMUNICATION Communication;
|
||||
WCHAR Buffer[100];
|
||||
|
||||
|
||||
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);
|
||||
OutputDebugStringW(Buffer);
|
||||
#endif
|
||||
|
||||
return Flags;
|
||||
}
|
||||
|
||||
|
@ -1625,8 +1721,11 @@ CKsProxy::KsProperty(
|
|||
ULONG DataLength,
|
||||
ULONG* BytesReturned)
|
||||
{
|
||||
assert(m_hDevice != 0);
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::KsProperty\n");
|
||||
#endif
|
||||
|
||||
assert(m_hDevice != 0);
|
||||
return KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_PROPERTY, (PVOID)Property, PropertyLength, (PVOID)PropertyData, DataLength, BytesReturned);
|
||||
}
|
||||
|
||||
|
@ -1639,8 +1738,11 @@ CKsProxy::KsMethod(
|
|||
ULONG DataLength,
|
||||
ULONG* BytesReturned)
|
||||
{
|
||||
assert(m_hDevice != 0);
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::KsMethod\n");
|
||||
#endif
|
||||
|
||||
assert(m_hDevice != 0);
|
||||
return KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_METHOD, (PVOID)Method, MethodLength, (PVOID)MethodData, DataLength, BytesReturned);
|
||||
}
|
||||
|
||||
|
@ -1653,8 +1755,11 @@ CKsProxy::KsEvent(
|
|||
ULONG DataLength,
|
||||
ULONG* BytesReturned)
|
||||
{
|
||||
assert(m_hDevice != 0);
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::KsEvent\n");
|
||||
#endif
|
||||
|
||||
assert(m_hDevice != 0);
|
||||
if (EventLength)
|
||||
return KsSynchronousDeviceControl(m_hDevice, IOCTL_KS_ENABLE_EVENT, (PVOID)Event, EventLength, (PVOID)EventData, DataLength, BytesReturned);
|
||||
else
|
||||
|
@ -1677,7 +1782,9 @@ CKsProxy::Set(
|
|||
{
|
||||
ULONG BytesReturned;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::Set\n");
|
||||
#endif
|
||||
|
||||
if (cbInstanceData)
|
||||
{
|
||||
|
@ -1721,7 +1828,9 @@ CKsProxy::Get(
|
|||
{
|
||||
ULONG BytesReturned;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::Get\n");
|
||||
#endif
|
||||
|
||||
if (cbInstanceData)
|
||||
{
|
||||
|
@ -1762,7 +1871,9 @@ CKsProxy::QuerySupported(
|
|||
KSPROPERTY Property;
|
||||
ULONG BytesReturned;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::QuerySupported\n");
|
||||
#endif
|
||||
|
||||
Property.Set = guidPropSet;
|
||||
Property.Id = dwPropID;
|
||||
|
@ -1787,7 +1898,9 @@ CKsProxy::CreateNodeInstance(
|
|||
{
|
||||
HRESULT hr;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::CreateNodeInstance\n");
|
||||
#endif
|
||||
|
||||
*Interface = NULL;
|
||||
|
||||
|
@ -1812,7 +1925,9 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::KsAddAggregate(
|
||||
IN REFGUID AggregateClass)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::KsAddAggregate NotImplemented\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -1821,7 +1936,10 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::KsRemoveAggregate(
|
||||
REFGUID AggregateClass)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::KsRemoveAggregate NotImplemented\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -1834,8 +1952,10 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CKsProxy::IsDirty()
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::IsDirty Notimplemented\n");
|
||||
DebugBreak();
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -1853,7 +1973,9 @@ CKsProxy::Load(
|
|||
ULONG PinId;
|
||||
LPOLESTR pMajor, pSub, pFormat;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::Load\n");
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
ULONG Version = ReadInt(pStm, hr);
|
||||
|
@ -1923,7 +2045,10 @@ CKsProxy::Save(
|
|||
IStream *pStm,
|
||||
BOOL fClearDirty)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::Save Notimplemented\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -1932,8 +2057,11 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::GetSizeMax(
|
||||
ULARGE_INTEGER *pcbSize)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::GetSizeMax Notimplemented\n");
|
||||
DebugBreak();
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -1945,8 +2073,9 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CKsProxy::DeviceInfo(CLSID *pclsidInterfaceClass, LPWSTR *pwszSymbolicLink)
|
||||
{
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::DeviceInfo\n");
|
||||
#endif
|
||||
|
||||
if (!m_DevicePath)
|
||||
{
|
||||
|
@ -1971,7 +2100,9 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CKsProxy::Reassociate(void)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::Reassociate\n");
|
||||
#endif
|
||||
|
||||
if (!m_DevicePath || m_hDevice)
|
||||
{
|
||||
|
@ -1994,7 +2125,9 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CKsProxy::Disassociate(void)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::Disassociate\n");
|
||||
#endif
|
||||
|
||||
if (!m_hDevice)
|
||||
return E_HANDLE;
|
||||
|
@ -2012,7 +2145,10 @@ HANDLE
|
|||
STDMETHODCALLTYPE
|
||||
CKsProxy::KsGetClockHandle()
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::KsGetClockHandle\n");
|
||||
#endif
|
||||
|
||||
return m_hClock;
|
||||
}
|
||||
|
||||
|
@ -2025,7 +2161,10 @@ HANDLE
|
|||
STDMETHODCALLTYPE
|
||||
CKsProxy::KsGetObjectHandle()
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::KsGetObjectHandle\n");
|
||||
#endif
|
||||
|
||||
return m_hDevice;
|
||||
}
|
||||
|
||||
|
@ -2036,7 +2175,10 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CKsProxy::InitNew( void)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::InitNew\n");
|
||||
#endif
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
@ -2323,7 +2465,6 @@ CKsProxy::CreatePins()
|
|||
KSPIN_DATAFLOW DataFlow;
|
||||
KSPIN_COMMUNICATION Communication;
|
||||
HRESULT hr;
|
||||
WCHAR Buffer[100];
|
||||
LPWSTR PinName;
|
||||
IPin * pPin;
|
||||
ULONG InputPin = 0;
|
||||
|
@ -2390,8 +2531,12 @@ CKsProxy::CreatePins()
|
|||
// store pins
|
||||
m_Pins.push_back(pPin);
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
WCHAR Buffer[100];
|
||||
swprintf(Buffer, L"Index %lu DataFlow %lu Name %s\n", Index, DataFlow, PinName);
|
||||
OutputDebugStringW(Buffer);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
|
@ -2402,14 +2547,16 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::Load(IPropertyBag *pPropBag, IErrorLog *pErrorLog)
|
||||
{
|
||||
HRESULT hr;
|
||||
WCHAR Buffer[100];
|
||||
VARIANT varName;
|
||||
LPGUID pGuid;
|
||||
ULONG NumGuids = 0;
|
||||
HDEVINFO hList;
|
||||
SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
WCHAR Buffer[100];
|
||||
OutputDebugStringW(L"CKsProxy::Load\n");
|
||||
#endif
|
||||
|
||||
// read device path
|
||||
varName.vt = VT_BSTR;
|
||||
|
@ -2417,14 +2564,18 @@ CKsProxy::Load(IPropertyBag *pPropBag, IErrorLog *pErrorLog)
|
|||
|
||||
if (FAILED(hr))
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
swprintf(Buffer, L"CKsProxy::Load Read %lx\n", hr);
|
||||
OutputDebugStringW(Buffer);
|
||||
#endif
|
||||
return MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, GetLastError());
|
||||
}
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"DevicePath: ");
|
||||
OutputDebugStringW(varName.bstrVal);
|
||||
OutputDebugStringW(L"\n");
|
||||
#endif
|
||||
|
||||
// create device list
|
||||
hList = SetupDiCreateDeviceInfoListExW(NULL, NULL, NULL, NULL);
|
||||
|
@ -2453,9 +2604,10 @@ CKsProxy::Load(IPropertyBag *pPropBag, IErrorLog *pErrorLog)
|
|||
if (m_hDevice == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
// failed to open device
|
||||
#ifdef KSPROXY_TRACE
|
||||
swprintf(Buffer, L"CKsProxy:: failed to open device with %lx\n", GetLastError());
|
||||
OutputDebugStringW(Buffer);
|
||||
|
||||
#endif
|
||||
return MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, GetLastError());
|
||||
}
|
||||
|
||||
|
@ -2493,7 +2645,9 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CKsProxy::Save(IPropertyBag *pPropBag, BOOL fClearDirty, BOOL fSaveAllProperties)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::Save\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -2506,7 +2660,9 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::GetClassID(
|
||||
CLSID *pClassID)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::GetClassID\n");
|
||||
#endif
|
||||
CopyMemory(pClassID, &CLSID_Proxy, sizeof(GUID));
|
||||
|
||||
return S_OK;
|
||||
|
@ -2516,8 +2672,21 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CKsProxy::Stop()
|
||||
{
|
||||
OutputDebugStringW(L"CKsProxy::Stop : NotImplemented\n");
|
||||
return E_NOTIMPL;
|
||||
HRESULT hr;
|
||||
|
||||
#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
|
||||
|
@ -2526,17 +2695,28 @@ CKsProxy::Pause()
|
|||
{
|
||||
HRESULT hr = S_OK;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::Pause\n");
|
||||
#endif
|
||||
|
||||
if (m_FilterState == State_Stopped)
|
||||
EnterCriticalSection(&m_Lock);
|
||||
|
||||
if (m_FilterState == State_Running)
|
||||
{
|
||||
hr = SetPinState(KSSTATE_PAUSE);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
hr = SetPinState(KSSTATE_STOP);
|
||||
}
|
||||
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;
|
||||
|
||||
}
|
||||
|
@ -2548,23 +2728,32 @@ CKsProxy::Run(
|
|||
{
|
||||
HRESULT hr;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::Run\n");
|
||||
#endif
|
||||
|
||||
EnterCriticalSection(&m_Lock);
|
||||
|
||||
if (m_FilterState == State_Stopped)
|
||||
{
|
||||
LeaveCriticalSection(&m_Lock);
|
||||
// setting filter state to pause
|
||||
hr = Pause();
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
EnterCriticalSection(&m_Lock);
|
||||
assert(m_FilterState == State_Paused);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -2631,9 +2820,11 @@ CKsProxy::SetPinState(
|
|||
// now set state
|
||||
hr = KsSynchronousDeviceControl(hPin, IOCTL_KS_PROPERTY, (PVOID)&Property, sizeof(KSPROPERTY), (PVOID)&State, sizeof(KSSTATE), &BytesReturned);
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
WCHAR Buffer[100];
|
||||
swprintf(Buffer, L"CKsProxy::SetPinState Index %u State %u hr %lx\n", Index, State, hr);
|
||||
OutputDebugStringW(Buffer);
|
||||
#endif
|
||||
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
@ -2647,6 +2838,9 @@ CKsProxy::GetState(
|
|||
DWORD dwMilliSecsTimeout,
|
||||
FILTER_STATE *State)
|
||||
{
|
||||
if (!State)
|
||||
return E_POINTER;
|
||||
|
||||
*State = m_FilterState;
|
||||
return S_OK;
|
||||
}
|
||||
|
@ -2666,8 +2860,9 @@ CKsProxy::SetSyncSource(
|
|||
ULONG BytesReturned;
|
||||
PIN_DIRECTION PinDir;
|
||||
|
||||
// Plug In Distributor: IKsClock
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::SetSyncSource\n");
|
||||
#endif
|
||||
|
||||
// FIXME
|
||||
// need locks
|
||||
|
@ -2761,7 +2956,9 @@ CKsProxy::SetSyncSource(
|
|||
}
|
||||
|
||||
m_ReferenceClock = pClock;
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::SetSyncSource done\n");
|
||||
#endif
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
@ -2770,7 +2967,9 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::GetSyncSource(
|
||||
IReferenceClock **pClock)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::GetSyncSource\n");
|
||||
#endif
|
||||
|
||||
if (!pClock)
|
||||
return E_POINTER;
|
||||
|
@ -2787,7 +2986,10 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::EnumPins(
|
||||
IEnumPins **ppEnum)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::EnumPins\n");
|
||||
#endif
|
||||
|
||||
return CEnumPins_fnConstructor(m_Pins, IID_IEnumPins, (void**)ppEnum);
|
||||
}
|
||||
|
||||
|
@ -2798,7 +3000,9 @@ CKsProxy::FindPin(
|
|||
{
|
||||
ULONG PinId;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::FindPin\n");
|
||||
#endif
|
||||
|
||||
if (!ppPin)
|
||||
return E_POINTER;
|
||||
|
@ -2834,7 +3038,9 @@ CKsProxy::QueryFilterInfo(
|
|||
if (!pInfo)
|
||||
return E_POINTER;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::QueryFilterInfo\n");
|
||||
#endif
|
||||
|
||||
pInfo->achName[0] = L'\0';
|
||||
pInfo->pGraph = m_pGraph;
|
||||
|
@ -2851,7 +3057,11 @@ CKsProxy::JoinFilterGraph(
|
|||
IFilterGraph *pGraph,
|
||||
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)
|
||||
{
|
||||
|
@ -2873,7 +3083,9 @@ STDMETHODCALLTYPE
|
|||
CKsProxy::QueryVendorInfo(
|
||||
LPWSTR *pVendorInfo)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::QueryVendorInfo\n");
|
||||
#endif
|
||||
return StringFromCLSID(CLSID_Proxy, pVendorInfo);
|
||||
}
|
||||
|
||||
|
@ -2885,7 +3097,10 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CKsProxy::Register()
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::Register : NotImplemented\n");
|
||||
#endif
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -2893,7 +3108,9 @@ HRESULT
|
|||
STDMETHODCALLTYPE
|
||||
CKsProxy::Unregister()
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsProxy::Unregister : NotImplemented\n");
|
||||
#endif
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -2904,11 +3121,13 @@ CKsProxy_Constructor(
|
|||
REFIID riid,
|
||||
LPVOID * ppv)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
WCHAR Buffer[100];
|
||||
LPOLESTR pstr;
|
||||
StringFromCLSID(riid, &pstr);
|
||||
swprintf(Buffer, L"CKsProxy_Constructor pUnkOuter %p riid %s\n", pUnkOuter, pstr);
|
||||
OutputDebugStringW(Buffer);
|
||||
#endif
|
||||
|
||||
CKsProxy * handler = new CKsProxy();
|
||||
|
||||
|
|
|
@ -88,7 +88,9 @@ STDMETHODCALLTYPE
|
|||
CKsQualityForwarder::KsFlushClient(
|
||||
IN IKsPin *Pin)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugString("UNIMPLEMENTED\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
HRESULT
|
||||
|
@ -101,14 +103,18 @@ CKsQualityForwarder_Constructor(
|
|||
HRESULT hr;
|
||||
HANDLE handle;
|
||||
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugStringW(L"CKsQualityForwarder_Constructor\n");
|
||||
#endif
|
||||
|
||||
// open default clock
|
||||
hr = KsOpenDefaultDevice(KSCATEGORY_QUALITY, GENERIC_READ | GENERIC_WRITE, &handle);
|
||||
|
||||
if (hr != NOERROR)
|
||||
{
|
||||
#ifdef KSPROXY_TRACE
|
||||
OutputDebugString("CKsClockForwarder_Constructor failed to open device\n");
|
||||
#endif
|
||||
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>
|
||||
<redefine name="WINVER">0x600</redefine>
|
||||
<file>idndl.cpp</file>
|
||||
<importlibrary definition="idndl-$(ARCH).def" />
|
||||
<importlibrary definition="idndl.spec" />
|
||||
</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
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
/* $Id$
|
||||
*
|
||||
/*
|
||||
* PROJECT: ReactOS Access Control List Editor
|
||||
* FILE: lib/acledit/acledit.c
|
||||
* PURPOSE: Access Control List Editor
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
/* $Id$
|
||||
*
|
||||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS Access Control List Editor
|
||||
* 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 (psmd->uId == FCIDM_MENU_FAVORITES)
|
||||
infoPtr->dwFlags |= SMIF_DROPCASCADE;
|
||||
else
|
||||
infoPtr->dwFlags |= SMIF_TRACKPOPUP;
|
||||
else{
|
||||
infoPtr->dwFlags |= SMIF_TRACKPOPUP;}
|
||||
if ((infoPtr->dwMask & SMIM_ICON) != 0)
|
||||
infoPtr->iIcon = -1;
|
||||
}
|
||||
|
|
|
@ -292,7 +292,7 @@ CreateBitmap(INT Width,
|
|||
INT Height,
|
||||
UINT Planes,
|
||||
UINT BitsPixel,
|
||||
PCVOID pUnsafeBits)
|
||||
CONST VOID* pUnsafeBits)
|
||||
{
|
||||
/* FIXME some part should be done in user mode */
|
||||
if (Width && Height)
|
||||
|
|
|
@ -10,7 +10,6 @@ typedef VOID
|
|||
typedef VOID
|
||||
(WINAPI *PINTERFACE_DEREFERENCE)(
|
||||
PVOID Context);
|
||||
#define DDKAPI __stdcall // FIXME
|
||||
#include <ntndk.h>
|
||||
#include <hidusage.h>
|
||||
#include <hidclass.h>
|
||||
|
|
|
@ -47,7 +47,7 @@ ConvertFiberToThread(VOID)
|
|||
pTeb->HasFiberData = FALSE;
|
||||
|
||||
/* free the fiber */
|
||||
if (pTeb->NtTib.FiberData != NULL)
|
||||
if(pTeb->NtTib.FiberData != NULL)
|
||||
{
|
||||
RtlFreeHeap(GetProcessHeap(), 0, pTeb->NtTib.FiberData);
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
<define name="wcsnicmp">_wcsnicmp</define>
|
||||
|
||||
<define name="_SETUPAPI_" />
|
||||
<define name="_CFGMGR32_" />
|
||||
<library>pnp_client</library>
|
||||
<library>uuid</library>
|
||||
<library>wine</library>
|
||||
|
|
|
@ -45,11 +45,6 @@
|
|||
|
||||
#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 "rpc_private.h"
|
||||
#include "resource.h"
|
||||
|
@ -61,6 +56,8 @@ typedef RESOURCEID *PRESOURCEID;
|
|||
#define SETUP_DEVICE_INFO_SET_MAGIC 0xd00ff057
|
||||
#define SETUP_CLASS_IMAGE_LIST_MAGIC 0xd00ff058
|
||||
|
||||
#define CMP_MAGIC 0x01234567
|
||||
|
||||
struct DeviceInterface /* Element of DeviceInfo.InterfaceListHead */
|
||||
{
|
||||
LIST_ENTRY ListEntry;
|
||||
|
|
|
@ -23,7 +23,7 @@ DriverEntry(PDRIVER_OBJECT DriverObject,
|
|||
|
||||
BCLASSAPI
|
||||
NTSTATUS
|
||||
DDKAPI
|
||||
NTAPI
|
||||
BatteryClassUnload(PVOID ClassData)
|
||||
{
|
||||
PBATTERY_CLASS_DATA BattClass = ClassData;
|
||||
|
@ -44,7 +44,7 @@ BatteryClassUnload(PVOID ClassData)
|
|||
|
||||
BCLASSAPI
|
||||
NTSTATUS
|
||||
DDKAPI
|
||||
NTAPI
|
||||
BatteryClassSystemControl(PVOID ClassData,
|
||||
PVOID WmiLibContext,
|
||||
PDEVICE_OBJECT DeviceObject,
|
||||
|
@ -58,7 +58,7 @@ BatteryClassSystemControl(PVOID ClassData,
|
|||
|
||||
BCLASSAPI
|
||||
NTSTATUS
|
||||
DDKAPI
|
||||
NTAPI
|
||||
BatteryClassQueryWmiDataBlock(PVOID ClassData,
|
||||
PDEVICE_OBJECT DeviceObject,
|
||||
PIRP Irp,
|
||||
|
@ -74,7 +74,7 @@ BatteryClassQueryWmiDataBlock(PVOID ClassData,
|
|||
|
||||
BCLASSAPI
|
||||
NTSTATUS
|
||||
DDKAPI
|
||||
NTAPI
|
||||
BatteryClassStatusNotify(PVOID ClassData)
|
||||
{
|
||||
PBATTERY_CLASS_DATA BattClass = ClassData;
|
||||
|
@ -129,7 +129,7 @@ BatteryClassStatusNotify(PVOID ClassData)
|
|||
|
||||
BCLASSAPI
|
||||
NTSTATUS
|
||||
DDKAPI
|
||||
NTAPI
|
||||
BatteryClassInitializeDevice(PBATTERY_MINIPORT_INFO MiniportInfo,
|
||||
PVOID *ClassData)
|
||||
{
|
||||
|
@ -172,7 +172,7 @@ BatteryClassInitializeDevice(PBATTERY_MINIPORT_INFO MiniportInfo,
|
|||
|
||||
BCLASSAPI
|
||||
NTSTATUS
|
||||
DDKAPI
|
||||
NTAPI
|
||||
BatteryClassIoctl(PVOID ClassData,
|
||||
PIRP Irp)
|
||||
{
|
||||
|
|
|
@ -7,6 +7,9 @@
|
|||
<directory name="cmbatt">
|
||||
<xi:include href="cmbatt/cmbatt.rbuild" />
|
||||
</directory>
|
||||
<directory name="compbatt">
|
||||
<xi:include href="compbatt/compbatt.rbuild" />
|
||||
</directory>
|
||||
</group>
|
||||
|
||||
<module name="acpi" type="kernelmodedriver" installbase="system32/drivers" installname="acpi.sys" allowwarnings="true">
|
||||
|
@ -26,6 +29,7 @@
|
|||
</directory>
|
||||
<file>osl.c</file>
|
||||
<file>acpienum.c</file>
|
||||
<file>eval.c</file>
|
||||
<file>interface.c</file>
|
||||
<file>pnp.c</file>
|
||||
<file>power.c</file>
|
||||
|
|
|
@ -58,6 +58,7 @@ KSPIN_LOCK acpi_bus_event_lock;
|
|||
LIST_HEAD(acpi_bus_event_list);
|
||||
//DECLARE_WAIT_QUEUE_HEAD(acpi_bus_event_queue);
|
||||
KEVENT AcpiEventQueue;
|
||||
KDPC event_dpc;
|
||||
|
||||
|
||||
static int
|
||||
|
@ -455,6 +456,21 @@ acpi_bus_get_perf_flags (
|
|||
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
|
||||
acpi_bus_generate_event (
|
||||
|
@ -463,10 +479,8 @@ acpi_bus_generate_event (
|
|||
int data)
|
||||
{
|
||||
struct acpi_bus_event *event = NULL;
|
||||
//unsigned long flags = 0;
|
||||
KIRQL OldIrql;
|
||||
|
||||
DPRINT1("acpi_bus_generate_event");
|
||||
DPRINT("acpi_bus_generate_event");
|
||||
|
||||
if (!device)
|
||||
return_VALUE(AE_BAD_PARAMETER);
|
||||
|
@ -484,14 +498,8 @@ acpi_bus_generate_event (
|
|||
event->type = type;
|
||||
event->data = data;
|
||||
|
||||
//spin_lock_irqsave(&acpi_bus_event_lock, flags);
|
||||
KeAcquireSpinLock(&acpi_bus_event_lock, &OldIrql);
|
||||
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);
|
||||
if (!KeInsertQueueDpc(&event_dpc, event, NULL))
|
||||
ExFreePool(event);
|
||||
|
||||
return_VALUE(0);
|
||||
}
|
||||
|
@ -506,7 +514,7 @@ acpi_bus_receive_event (
|
|||
|
||||
//DECLARE_WAITQUEUE(wait, current);
|
||||
|
||||
DPRINT1("acpi_bus_receive_event");
|
||||
DPRINT("acpi_bus_receive_event");
|
||||
|
||||
if (!event)
|
||||
return AE_BAD_PARAMETER;
|
||||
|
@ -1153,9 +1161,11 @@ acpi_bus_add (
|
|||
case ACPI_BUS_TYPE_SYSTEM:
|
||||
sprintf(device->pnp.bus_id, "%s", "ACPI");
|
||||
break;
|
||||
case ACPI_BUS_TYPE_POWER_BUTTONF:
|
||||
case ACPI_BUS_TYPE_POWER_BUTTON:
|
||||
sprintf(device->pnp.bus_id, "%s", "PWRF");
|
||||
break;
|
||||
case ACPI_BUS_TYPE_SLEEP_BUTTONF:
|
||||
case ACPI_BUS_TYPE_SLEEP_BUTTON:
|
||||
sprintf(device->pnp.bus_id, "%s", "SLPF");
|
||||
break;
|
||||
|
@ -1262,9 +1272,15 @@ acpi_bus_add (
|
|||
hid = ACPI_THERMAL_HID;
|
||||
break;
|
||||
case ACPI_BUS_TYPE_POWER_BUTTON:
|
||||
hid = ACPI_BUTTON_HID_POWER;
|
||||
break;
|
||||
case ACPI_BUS_TYPE_POWER_BUTTONF:
|
||||
hid = ACPI_BUTTON_HID_POWERF;
|
||||
break;
|
||||
case ACPI_BUS_TYPE_SLEEP_BUTTON:
|
||||
hid = ACPI_BUTTON_HID_SLEEP;
|
||||
break;
|
||||
case ACPI_BUS_TYPE_SLEEP_BUTTONF:
|
||||
hid = ACPI_BUTTON_HID_SLEEPF;
|
||||
break;
|
||||
}
|
||||
|
@ -1326,7 +1342,9 @@ acpi_bus_add (
|
|||
*/
|
||||
switch (type) {
|
||||
case ACPI_BUS_TYPE_POWER_BUTTON:
|
||||
case ACPI_BUS_TYPE_POWER_BUTTONF:
|
||||
case ACPI_BUS_TYPE_SLEEP_BUTTON:
|
||||
case ACPI_BUS_TYPE_SLEEP_BUTTONF:
|
||||
break;
|
||||
default:
|
||||
status = AcpiAttachData(device->handle,
|
||||
|
@ -1530,16 +1548,40 @@ acpi_bus_scan_fixed (
|
|||
if (!root)
|
||||
return_VALUE(AE_NOT_FOUND);
|
||||
|
||||
/*
|
||||
* Enumerate all fixed-feature devices.
|
||||
/* If ACPI_FADT_POWER_BUTTON is set, then a control
|
||||
* method power button is present. Otherwise, a fixed
|
||||
* power button is present.
|
||||
*/
|
||||
if (AcpiGbl_FADT.Flags & ACPI_FADT_POWER_BUTTON)
|
||||
result = acpi_bus_add(&device, acpi_root,
|
||||
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)
|
||||
result = acpi_bus_add(&device, acpi_root,
|
||||
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);
|
||||
}
|
||||
|
@ -1549,120 +1591,6 @@ acpi_bus_scan_fixed (
|
|||
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
|
||||
acpi_bus_init (void)
|
||||
{
|
||||
|
@ -1671,6 +1599,8 @@ acpi_bus_init (void)
|
|||
|
||||
DPRINT("acpi_bus_init");
|
||||
|
||||
KeInitializeDpc(&event_dpc, acpi_bus_generate_event_dpc, NULL);
|
||||
|
||||
status = AcpiEnableSubsystem(ACPI_FULL_INITIALIZATION);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
DPRINT1("Unable to start the ACPI Interpreter\n");
|
||||
|
@ -1701,13 +1631,6 @@ acpi_bus_init (void)
|
|||
/* Initialize sleep structures */
|
||||
//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.
|
||||
*/
|
||||
|
@ -1726,6 +1649,7 @@ acpi_bus_init (void)
|
|||
if (result)
|
||||
goto error2;
|
||||
|
||||
|
||||
/*
|
||||
* Enumerate devices in the ACPI namespace.
|
||||
*/
|
||||
|
@ -1736,7 +1660,6 @@ acpi_bus_init (void)
|
|||
if (result)
|
||||
DPRINT1("acpi_bus_scan failed\n");
|
||||
|
||||
//acpi_motherboard_init();
|
||||
return_VALUE(0);
|
||||
|
||||
/* Mimic structured exception handling */
|
||||
|
|
|
@ -57,6 +57,11 @@ struct acpi_button {
|
|||
UINT8 type;
|
||||
unsigned long pushed;
|
||||
};
|
||||
|
||||
struct acpi_device *power_button;
|
||||
struct acpi_device *sleep_button;
|
||||
struct acpi_device *lid_button;
|
||||
|
||||
/* --------------------------------------------------------------------------
|
||||
Driver Interface
|
||||
-------------------------------------------------------------------------- */
|
||||
|
@ -113,10 +118,6 @@ acpi_button_add (
|
|||
ACPI_STATUS status = AE_OK;
|
||||
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");
|
||||
|
||||
if (!device)
|
||||
|
|
|
@ -8,6 +8,9 @@
|
|||
#include <acpi_bus.h>
|
||||
#include <acpi_drivers.h>
|
||||
|
||||
#include <initguid.h>
|
||||
#include <poclass.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
|
@ -33,9 +36,13 @@ Bus_PDO_PnP (
|
|||
{
|
||||
NTSTATUS status;
|
||||
POWER_STATE state;
|
||||
struct acpi_device *device = NULL;
|
||||
|
||||
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
|
||||
// defer these irps. Therefore we do not pass them down but merely
|
||||
|
@ -45,7 +52,6 @@ Bus_PDO_PnP (
|
|||
switch (IrpStack->MinorFunction) {
|
||||
|
||||
case IRP_MN_START_DEVICE:
|
||||
|
||||
//
|
||||
// Here we do what ever initialization and ``turning on'' that is
|
||||
// required to allow others to access this device.
|
||||
|
@ -59,6 +65,43 @@ Bus_PDO_PnP (
|
|||
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;
|
||||
PoSetPowerState(DeviceData->Common.Self, DevicePowerState, state);
|
||||
DeviceData->Common.DevicePowerState = PowerDeviceD0;
|
||||
|
@ -68,6 +111,9 @@ Bus_PDO_PnP (
|
|||
|
||||
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
|
||||
// we acquired for the device.
|
||||
|
@ -331,20 +377,17 @@ Bus_PDO_QueryDeviceCaps(
|
|||
deviceCapabilities->UniqueID = device->flags.unique_id;
|
||||
deviceCapabilities->NoDisplayInUI = !device->status.show_in_ui;
|
||||
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 */
|
||||
deviceCapabilities->RawDeviceOK = TRUE;
|
||||
if (!device ||
|
||||
(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;
|
||||
|
|
|
@ -11,4 +11,5 @@
|
|||
<file>cmbpnp.c</file>
|
||||
<file>cmbwmi.c</file>
|
||||
<file>cmbatt.rc</file>
|
||||
<pch>cmbatt.h</pch>
|
||||
</module>
|
||||
|
|
|
@ -78,60 +78,6 @@ GetStringElement(IN PACPI_METHOD_ARGUMENT Argument,
|
|||
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
|
||||
NTAPI
|
||||
CmBattSendDownStreamIrp(IN PDEVICE_OBJECT DeviceObject,
|
||||
|
@ -166,8 +112,253 @@ CmBattSendDownStreamIrp(IN PDEVICE_OBJECT DeviceObject,
|
|||
if (CmBattDebug & 0x4C)
|
||||
DbgPrint("CmBattSendDownStreamIrp: Failed to allocate Irp\n");
|
||||
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 */
|
||||
if (CmBattDebug & 0x40)
|
||||
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_POWER_BUTTON,
|
||||
ACPI_BUS_TYPE_SLEEP_BUTTON,
|
||||
ACPI_BUS_TYPE_POWER_BUTTONF,
|
||||
ACPI_BUS_TYPE_SLEEP_BUTTONF,
|
||||
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
|
||||
LIST_ENTRY Link;
|
||||
ULONG InterfaceRefCount;
|
||||
UNICODE_STRING InterfaceName;
|
||||
|
||||
} PDO_DEVICE_DATA, *PPDO_DEVICE_DATA;
|
||||
|
||||
|
@ -64,10 +65,6 @@ typedef struct _FDO_DEVICE_DATA
|
|||
// A synchronization for access to the device extension.
|
||||
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;
|
||||
|
||||
#define FDO_FROM_PDO(pdoData) \
|
||||
|
@ -90,6 +87,11 @@ NTSTATUS
|
|||
ACPIEnumerateDevices(
|
||||
PFDO_DEVICE_DATA DeviceExtension);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
Bus_PDO_EvalMethod(PPDO_DEVICE_DATA DeviceData,
|
||||
PIRP Irp);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
Bus_CreateClose (
|
||||
|
|
|
@ -6,6 +6,9 @@
|
|||
#include <acpi_bus.h>
|
||||
#include <acpi_drivers.h>
|
||||
|
||||
#include <acpiioct.h>
|
||||
#include <poclass.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
|
@ -15,7 +18,8 @@
|
|||
|
||||
#endif
|
||||
|
||||
|
||||
extern struct acpi_device *sleep_button;
|
||||
extern struct acpi_device *power_button;
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
|
@ -29,7 +33,9 @@ Bus_AddDevice(
|
|||
PDEVICE_OBJECT deviceObject = NULL;
|
||||
PFDO_DEVICE_DATA deviceData = NULL;
|
||||
PWCHAR deviceName = NULL;
|
||||
#ifndef NDEBUG
|
||||
ULONG nameLength;
|
||||
#endif
|
||||
|
||||
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
|
||||
NTAPI
|
||||
ACPIDispatchDeviceControl(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp)
|
||||
{
|
||||
PIO_STACK_LOCATION IrpSp;
|
||||
NTSTATUS Status;
|
||||
PIO_STACK_LOCATION irpStack;
|
||||
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;
|
||||
|
||||
IrpSp = IoGetCurrentIrpStackLocation(Irp);
|
||||
switch (IrpSp->Parameters.DeviceIoControl.IoControlCode) {
|
||||
default:
|
||||
DPRINT("Unknown IOCTL 0x%X\n", IrpSp->Parameters.DeviceIoControl.IoControlCode);
|
||||
Status = STATUS_NOT_IMPLEMENTED;
|
||||
break;
|
||||
}
|
||||
if (!commonData->IsFDO)
|
||||
{
|
||||
switch (irpStack->Parameters.DeviceIoControl.IoControlCode)
|
||||
{
|
||||
case IOCTL_ACPI_EVAL_METHOD:
|
||||
status = Bus_PDO_EvalMethod((PPDO_DEVICE_DATA)commonData,
|
||||
Irp);
|
||||
break;
|
||||
|
||||
if (Status != STATUS_PENDING) {
|
||||
Irp->IoStatus.Status = Status;
|
||||
case IOCTL_GET_SYS_BUTTON_CAPS:
|
||||
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
|
||||
|
@ -211,6 +340,8 @@ DriverEntry (
|
|||
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = ACPIDispatchDeviceControl;
|
||||
DriverObject->MajorFunction [IRP_MJ_PNP] = Bus_PnP;
|
||||
DriverObject->MajorFunction [IRP_MJ_POWER] = Bus_Power;
|
||||
DriverObject->MajorFunction [IRP_MJ_CREATE] = ACPIDispatchCreateClose;
|
||||
DriverObject->MajorFunction [IRP_MJ_CLOSE] = ACPIDispatchCreateClose;
|
||||
|
||||
DriverObject->DriverExtension->AddDevice = Bus_AddDevice;
|
||||
|
||||
|
|
|
@ -576,7 +576,12 @@ AcpiOsWaitSemaphore(
|
|||
DPRINT("Waiting for semaphore %p\n", Handle);
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -590,7 +595,12 @@ AcpiOsSignalSemaphore (
|
|||
DPRINT("AcpiOsSignalSemaphore %p\n",Handle);
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
|
||||
/* DDK/NDK/SDK Headers */
|
||||
#include <ddk/ntddk.h>
|
||||
#include <ddk/ntddmou.h>
|
||||
#include <ddk/ntifs.h>
|
||||
#include <ddk/tvout.h>
|
||||
#include <ndk/ntndk.h>
|
||||
#include <ntddk.h>
|
||||
#include <ntddmou.h>
|
||||
#include <ntifs.h>
|
||||
#include <tvout.h>
|
||||
#include <ntndk.h>
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <windef.h>
|
||||
|
@ -16,7 +16,7 @@
|
|||
#include <dde.h>
|
||||
|
||||
|
||||
#include <ddk/ddkmapi.h>
|
||||
#include <ddkmapi.h>
|
||||
|
||||
/* Prototypes */
|
||||
VOID DxGetVersionNumber(PVOID lpvInBuffer, LPDDGETVERSIONNUMBER lpvOutBuffer);
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
/* DDK/NDK/SDK Headers */
|
||||
#include <ddk/ntddk.h>
|
||||
#include <ddk/ntddmou.h>
|
||||
#include <ddk/ntifs.h>
|
||||
#include <ddk/tvout.h>
|
||||
#include <ndk/ntndk.h>
|
||||
#include <ntddk.h>
|
||||
#include <ntddmou.h>
|
||||
#include <ntifs.h>
|
||||
#include <tvout.h>
|
||||
#include <ntndk.h>
|
||||
|
||||
/* Win32 Headers */
|
||||
#define WINBASEAPI
|
||||
|
|
|
@ -42,8 +42,11 @@ typedef unsigned char BYTE;
|
|||
/* REACTOS FIXME */
|
||||
#undef DeleteFile
|
||||
/* 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 RtlLargeIntegerGreaterThan(a, b) (a).QuadPart > (b).QuadPart
|
||||
*/
|
||||
|
||||
|
||||
// the following include files should be in the inc sub-dir associated with this driver
|
||||
|
|
|
@ -17,15 +17,6 @@
|
|||
#define PST_RS232 1
|
||||
#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
|
||||
{
|
||||
dsStopped,
|
||||
|
|
|
@ -77,7 +77,7 @@ extern "C" {
|
|||
|
||||
SCSIPORT_API
|
||||
VOID
|
||||
DDKCDECLAPI
|
||||
__cdecl
|
||||
ScsiDebugPrint(
|
||||
ULONG DebugPrintLevel,
|
||||
PCCHAR DebugMessage,
|
||||
|
@ -1066,7 +1066,7 @@ IdeMediaStatus(
|
|||
IN UCHAR Channel
|
||||
);
|
||||
|
||||
ULONG DDKAPI
|
||||
ULONG NTAPI
|
||||
AtapiFindController(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN PVOID Context,
|
||||
|
|
|
@ -1015,7 +1015,7 @@ UniataEnumBusMasterController(
|
|||
PVOID Argument2
|
||||
);
|
||||
|
||||
extern ULONG DDKAPI
|
||||
extern ULONG NTAPI
|
||||
UniataFindCompatBusMasterController1(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN PVOID Context,
|
||||
|
@ -1025,7 +1025,7 @@ UniataFindCompatBusMasterController1(
|
|||
OUT PBOOLEAN Again
|
||||
);
|
||||
|
||||
extern ULONG DDKAPI
|
||||
extern ULONG NTAPI
|
||||
UniataFindCompatBusMasterController2(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN PVOID Context,
|
||||
|
@ -1044,7 +1044,7 @@ UniataAllocateLunExt(
|
|||
ULONG NewNumberChannels
|
||||
);
|
||||
|
||||
extern ULONG DDKAPI
|
||||
extern ULONG NTAPI
|
||||
UniataFindBusMasterController(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN PVOID Context,
|
||||
|
@ -1054,7 +1054,7 @@ UniataFindBusMasterController(
|
|||
OUT PBOOLEAN Again
|
||||
);
|
||||
|
||||
extern ULONG DDKAPI
|
||||
extern ULONG NTAPI
|
||||
UniataFindFakeBusMasterController(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN PVOID Context,
|
||||
|
|
|
@ -86,9 +86,7 @@
|
|||
/* Compiler dependencies */
|
||||
/***************************************************/
|
||||
|
||||
#define DDKAPI __stdcall
|
||||
#define DDKFASTAPI __fastcall
|
||||
#define DDKCDECLAPI __cdecl
|
||||
|
||||
/* Are we under GNU C (mingw) ??? */
|
||||
#ifdef __GNUC__
|
||||
|
|
|
@ -94,7 +94,7 @@ BOOLEAN WinVer_WDM_Model = FALSE;
|
|||
UCHAR g_foo = 0;
|
||||
|
||||
BOOLEAN
|
||||
DDKAPI
|
||||
NTAPI
|
||||
AtapiResetController__(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN ULONG PathId,
|
||||
|
@ -115,7 +115,7 @@ AtapiHwInitialize__(
|
|||
#ifndef UNIATA_CORE
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
AtapiCallBack_X(
|
||||
IN PVOID HwDeviceExtension
|
||||
);
|
||||
|
@ -129,13 +129,13 @@ AtapiCallBack_X(
|
|||
#endif
|
||||
|
||||
RETTYPE_XXableInterrupts
|
||||
DDKAPI
|
||||
NTAPI
|
||||
AtapiInterruptDpc(
|
||||
IN PVOID HwDeviceExtension
|
||||
);
|
||||
|
||||
RETTYPE_XXableInterrupts
|
||||
DDKAPI
|
||||
NTAPI
|
||||
AtapiEnableInterrupts__(
|
||||
IN PVOID HwDeviceExtension
|
||||
);
|
||||
|
@ -150,7 +150,7 @@ AtapiQueueTimerDpc(
|
|||
);
|
||||
|
||||
SCSI_ADAPTER_CONTROL_STATUS
|
||||
DDKAPI
|
||||
NTAPI
|
||||
AtapiAdapterControl(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN SCSI_ADAPTER_CONTROL_TYPE ControlType,
|
||||
|
@ -1005,7 +1005,7 @@ AtaUmode(PIDENTIFY_DATA2 ident)
|
|||
#ifndef UNIATA_CORE
|
||||
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
AtapiTimerDpc(
|
||||
IN PVOID HwDeviceExtension
|
||||
)
|
||||
|
@ -1856,7 +1856,7 @@ Return Value:
|
|||
|
||||
--*/
|
||||
BOOLEAN
|
||||
DDKAPI
|
||||
NTAPI
|
||||
AtapiResetController(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN ULONG PathId
|
||||
|
@ -2598,7 +2598,7 @@ Return Value:
|
|||
|
||||
--*/
|
||||
BOOLEAN
|
||||
DDKAPI
|
||||
NTAPI
|
||||
AtapiHwInitialize(
|
||||
IN PVOID HwDeviceExtension
|
||||
)
|
||||
|
@ -3210,7 +3210,7 @@ Return Value:
|
|||
|
||||
--*/
|
||||
BOOLEAN
|
||||
DDKAPI
|
||||
NTAPI
|
||||
AtapiInterrupt(
|
||||
IN PVOID HwDeviceExtension
|
||||
)
|
||||
|
@ -3400,7 +3400,7 @@ AtapiInterrupt2(
|
|||
} // end AtapiInterrupt2()
|
||||
|
||||
RETTYPE_XXableInterrupts
|
||||
DDKAPI
|
||||
NTAPI
|
||||
AtapiInterruptDpc(
|
||||
IN PVOID HwDeviceExtension
|
||||
)
|
||||
|
@ -3437,7 +3437,7 @@ AtapiInterruptDpc(
|
|||
|
||||
|
||||
RETTYPE_XXableInterrupts
|
||||
DDKAPI
|
||||
NTAPI
|
||||
AtapiEnableInterrupts__(
|
||||
IN PVOID HwDeviceExtension
|
||||
)
|
||||
|
@ -7251,7 +7251,7 @@ Return Value:
|
|||
|
||||
--*/
|
||||
BOOLEAN
|
||||
DDKAPI
|
||||
NTAPI
|
||||
AtapiStartIo(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN PSCSI_REQUEST_BLOCK Srb
|
||||
|
@ -8343,7 +8343,7 @@ Return Value:
|
|||
--*/
|
||||
extern "C"
|
||||
ULONG
|
||||
DDKAPI
|
||||
NTAPI
|
||||
DriverEntry(
|
||||
IN PVOID DriverObject,
|
||||
IN PVOID Argument2
|
||||
|
@ -9059,7 +9059,7 @@ AtapiRegCheckParameterValue(
|
|||
|
||||
|
||||
SCSI_ADAPTER_CONTROL_STATUS
|
||||
DDKAPI
|
||||
NTAPI
|
||||
AtapiAdapterControl(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN SCSI_ADAPTER_CONTROL_TYPE ControlType,
|
||||
|
@ -9152,7 +9152,7 @@ AtapiAdapterControl(
|
|||
extern "C"
|
||||
NTHALAPI
|
||||
VOID
|
||||
DDKAPI
|
||||
NTAPI
|
||||
HalDisplayString (
|
||||
PUCHAR String
|
||||
);
|
||||
|
|
|
@ -424,38 +424,38 @@ typedef struct _SCSI_WMI_REQUEST_BLOCK {
|
|||
|
||||
typedef
|
||||
BOOLEAN
|
||||
(DDKAPI *PHW_INITIALIZE) (
|
||||
(NTAPI *PHW_INITIALIZE) (
|
||||
IN PVOID DeviceExtension
|
||||
);
|
||||
|
||||
typedef
|
||||
BOOLEAN
|
||||
(DDKAPI *PHW_STARTIO) (
|
||||
(NTAPI *PHW_STARTIO) (
|
||||
IN PVOID DeviceExtension,
|
||||
IN PSCSI_REQUEST_BLOCK Srb
|
||||
);
|
||||
|
||||
typedef
|
||||
BOOLEAN
|
||||
(DDKAPI *PHW_INTERRUPT) (
|
||||
(NTAPI *PHW_INTERRUPT) (
|
||||
IN PVOID DeviceExtension
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(DDKAPI *PHW_TIMER) (
|
||||
(NTAPI *PHW_TIMER) (
|
||||
IN PVOID DeviceExtension
|
||||
);
|
||||
|
||||
typedef
|
||||
VOID
|
||||
(DDKAPI *PHW_DMA_STARTED) (
|
||||
(NTAPI *PHW_DMA_STARTED) (
|
||||
IN PVOID DeviceExtension
|
||||
);
|
||||
|
||||
typedef
|
||||
ULONG
|
||||
(DDKAPI *PHW_FIND_ADAPTER) (
|
||||
(NTAPI *PHW_FIND_ADAPTER) (
|
||||
IN PVOID DeviceExtension,
|
||||
IN PVOID HwContext,
|
||||
IN PVOID BusInformation,
|
||||
|
@ -466,14 +466,14 @@ ULONG
|
|||
|
||||
typedef
|
||||
BOOLEAN
|
||||
(DDKAPI *PHW_RESET_BUS) (
|
||||
(NTAPI *PHW_RESET_BUS) (
|
||||
IN PVOID DeviceExtension,
|
||||
IN ULONG PathId
|
||||
);
|
||||
|
||||
typedef
|
||||
BOOLEAN
|
||||
(DDKAPI *PHW_ADAPTER_STATE) (
|
||||
(NTAPI *PHW_ADAPTER_STATE) (
|
||||
IN PVOID DeviceExtension,
|
||||
IN PVOID Context,
|
||||
IN BOOLEAN SaveState
|
||||
|
@ -481,7 +481,7 @@ BOOLEAN
|
|||
|
||||
typedef
|
||||
SCSI_ADAPTER_CONTROL_STATUS
|
||||
(DDKAPI *PHW_ADAPTER_CONTROL) (
|
||||
(NTAPI *PHW_ADAPTER_CONTROL) (
|
||||
IN PVOID DeviceExtension,
|
||||
IN SCSI_ADAPTER_CONTROL_TYPE ControlType,
|
||||
IN PVOID Parameters
|
||||
|
@ -607,7 +607,7 @@ typedef struct _HW_INITIALIZATION_DATA_COMMON {
|
|||
//
|
||||
|
||||
SCSIPORT_API
|
||||
ULONG DDKAPI
|
||||
ULONG NTAPI
|
||||
ScsiPortInitialize(
|
||||
IN PVOID Argument1,
|
||||
IN PVOID Argument2,
|
||||
|
@ -616,14 +616,14 @@ ScsiPortInitialize(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortFreeDeviceBase(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN PVOID MappedAddress
|
||||
);
|
||||
|
||||
SCSIPORT_API
|
||||
ULONG DDKAPI
|
||||
ULONG NTAPI
|
||||
ScsiPortGetBusData(
|
||||
IN PVOID DeviceExtension,
|
||||
IN ULONG BusDataType,
|
||||
|
@ -634,7 +634,7 @@ ScsiPortGetBusData(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
ULONG DDKAPI
|
||||
ULONG NTAPI
|
||||
ScsiPortSetBusDataByOffset(
|
||||
IN PVOID DeviceExtension,
|
||||
IN ULONG BusDataType,
|
||||
|
@ -646,7 +646,7 @@ ScsiPortSetBusDataByOffset(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
PVOID DDKAPI
|
||||
PVOID NTAPI
|
||||
ScsiPortGetDeviceBase(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN INTERFACE_TYPE BusType,
|
||||
|
@ -657,7 +657,7 @@ ScsiPortGetDeviceBase(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
PVOID DDKAPI
|
||||
PVOID NTAPI
|
||||
ScsiPortGetLogicalUnit(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN UCHAR PathId,
|
||||
|
@ -666,7 +666,7 @@ ScsiPortGetLogicalUnit(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
PSCSI_REQUEST_BLOCK DDKAPI
|
||||
PSCSI_REQUEST_BLOCK NTAPI
|
||||
ScsiPortGetSrb(
|
||||
IN PVOID DeviceExtension,
|
||||
IN UCHAR PathId,
|
||||
|
@ -676,7 +676,7 @@ ScsiPortGetSrb(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
SCSI_PHYSICAL_ADDRESS DDKAPI
|
||||
SCSI_PHYSICAL_ADDRESS NTAPI
|
||||
ScsiPortGetPhysicalAddress(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN PSCSI_REQUEST_BLOCK Srb,
|
||||
|
@ -685,14 +685,14 @@ ScsiPortGetPhysicalAddress(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
PVOID DDKAPI
|
||||
PVOID NTAPI
|
||||
ScsiPortGetVirtualAddress(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN SCSI_PHYSICAL_ADDRESS PhysicalAddress
|
||||
);
|
||||
|
||||
SCSIPORT_API
|
||||
PVOID DDKAPI
|
||||
PVOID NTAPI
|
||||
ScsiPortGetUncachedExtension(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN PPORT_CONFIGURATION_INFORMATION ConfigInfo,
|
||||
|
@ -700,13 +700,13 @@ ScsiPortGetUncachedExtension(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortFlushDma(
|
||||
IN PVOID DeviceExtension
|
||||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortIoMapTransfer(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN PSCSI_REQUEST_BLOCK Srb,
|
||||
|
@ -715,7 +715,7 @@ ScsiPortIoMapTransfer(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKCDECLAPI
|
||||
VOID __cdecl
|
||||
ScsiPortNotification(
|
||||
IN SCSI_NOTIFICATION_TYPE NotificationType,
|
||||
IN PVOID HwDeviceExtension,
|
||||
|
@ -723,7 +723,7 @@ ScsiPortNotification(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortLogError(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
|
||||
|
@ -735,7 +735,7 @@ ScsiPortLogError(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortCompleteRequest(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN UCHAR PathId,
|
||||
|
@ -745,7 +745,7 @@ ScsiPortCompleteRequest(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortMoveMemory(
|
||||
IN PVOID WriteBuffer,
|
||||
IN PVOID ReadBuffer,
|
||||
|
@ -753,25 +753,25 @@ ScsiPortMoveMemory(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
UCHAR DDKAPI
|
||||
UCHAR NTAPI
|
||||
ScsiPortReadPortUchar(
|
||||
IN PUCHAR Port
|
||||
);
|
||||
|
||||
SCSIPORT_API
|
||||
USHORT DDKAPI
|
||||
USHORT NTAPI
|
||||
ScsiPortReadPortUshort(
|
||||
IN PUSHORT Port
|
||||
);
|
||||
|
||||
SCSIPORT_API
|
||||
ULONG DDKAPI
|
||||
ULONG NTAPI
|
||||
ScsiPortReadPortUlong(
|
||||
IN PULONG Port
|
||||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortReadPortBufferUchar(
|
||||
IN PUCHAR Port,
|
||||
IN PUCHAR Buffer,
|
||||
|
@ -779,7 +779,7 @@ ScsiPortReadPortBufferUchar(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortReadPortBufferUshort(
|
||||
IN PUSHORT Port,
|
||||
IN PUSHORT Buffer,
|
||||
|
@ -787,7 +787,7 @@ ScsiPortReadPortBufferUshort(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortReadPortBufferUlong(
|
||||
IN PULONG Port,
|
||||
IN PULONG Buffer,
|
||||
|
@ -795,25 +795,25 @@ ScsiPortReadPortBufferUlong(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
UCHAR DDKAPI
|
||||
UCHAR NTAPI
|
||||
ScsiPortReadRegisterUchar(
|
||||
IN PUCHAR Register
|
||||
);
|
||||
|
||||
SCSIPORT_API
|
||||
USHORT DDKAPI
|
||||
USHORT NTAPI
|
||||
ScsiPortReadRegisterUshort(
|
||||
IN PUSHORT Register
|
||||
);
|
||||
|
||||
SCSIPORT_API
|
||||
ULONG DDKAPI
|
||||
ULONG NTAPI
|
||||
ScsiPortReadRegisterUlong(
|
||||
IN PULONG Register
|
||||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortReadRegisterBufferUchar(
|
||||
IN PUCHAR Register,
|
||||
IN PUCHAR Buffer,
|
||||
|
@ -821,7 +821,7 @@ ScsiPortReadRegisterBufferUchar(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortReadRegisterBufferUshort(
|
||||
IN PUSHORT Register,
|
||||
IN PUSHORT Buffer,
|
||||
|
@ -829,7 +829,7 @@ ScsiPortReadRegisterBufferUshort(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortReadRegisterBufferUlong(
|
||||
IN PULONG Register,
|
||||
IN PULONG Buffer,
|
||||
|
@ -837,34 +837,34 @@ ScsiPortReadRegisterBufferUlong(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortStallExecution(
|
||||
IN ULONG Delay
|
||||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortWritePortUchar(
|
||||
IN PUCHAR Port,
|
||||
IN UCHAR Value
|
||||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortWritePortUshort(
|
||||
IN PUSHORT Port,
|
||||
IN USHORT Value
|
||||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortWritePortUlong(
|
||||
IN PULONG Port,
|
||||
IN ULONG Value
|
||||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortWritePortBufferUchar(
|
||||
IN PUCHAR Port,
|
||||
IN PUCHAR Buffer,
|
||||
|
@ -872,7 +872,7 @@ ScsiPortWritePortBufferUchar(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortWritePortBufferUshort(
|
||||
IN PUSHORT Port,
|
||||
IN PUSHORT Buffer,
|
||||
|
@ -880,7 +880,7 @@ ScsiPortWritePortBufferUshort(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortWritePortBufferUlong(
|
||||
IN PULONG Port,
|
||||
IN PULONG Buffer,
|
||||
|
@ -888,28 +888,28 @@ ScsiPortWritePortBufferUlong(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortWriteRegisterUchar(
|
||||
IN PUCHAR Register,
|
||||
IN UCHAR Value
|
||||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortWriteRegisterUshort(
|
||||
IN PUSHORT Register,
|
||||
IN USHORT Value
|
||||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortWriteRegisterUlong(
|
||||
IN PULONG Register,
|
||||
IN ULONG Value
|
||||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortWriteRegisterBufferUchar(
|
||||
IN PUCHAR Register,
|
||||
IN PUCHAR Buffer,
|
||||
|
@ -917,7 +917,7 @@ ScsiPortWriteRegisterBufferUchar(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortWriteRegisterBufferUshort(
|
||||
IN PUSHORT Register,
|
||||
IN PUSHORT Buffer,
|
||||
|
@ -925,7 +925,7 @@ ScsiPortWriteRegisterBufferUshort(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKAPI
|
||||
VOID NTAPI
|
||||
ScsiPortWriteRegisterBufferUlong(
|
||||
IN PULONG Register,
|
||||
IN PULONG Buffer,
|
||||
|
@ -933,13 +933,13 @@ ScsiPortWriteRegisterBufferUlong(
|
|||
);
|
||||
|
||||
SCSIPORT_API
|
||||
SCSI_PHYSICAL_ADDRESS DDKAPI
|
||||
SCSI_PHYSICAL_ADDRESS NTAPI
|
||||
ScsiPortConvertUlongToPhysicalAddress(
|
||||
ULONG UlongAddress
|
||||
);
|
||||
|
||||
SCSIPORT_API
|
||||
ULONG DDKAPI
|
||||
ULONG NTAPI
|
||||
ScsiPortConvertPhysicalAddressToUlong(
|
||||
SCSI_PHYSICAL_ADDRESS Address
|
||||
);
|
||||
|
@ -947,7 +947,7 @@ ScsiPortConvertPhysicalAddressToUlong(
|
|||
#define ScsiPortConvertPhysicalAddressToUlong(Address) ((Address).LowPart)
|
||||
|
||||
SCSIPORT_API
|
||||
BOOLEAN DDKAPI
|
||||
BOOLEAN NTAPI
|
||||
ScsiPortValidateRange(
|
||||
IN PVOID HwDeviceExtension,
|
||||
IN INTERFACE_TYPE BusType,
|
||||
|
@ -960,7 +960,7 @@ ScsiPortValidateRange(
|
|||
// begin_ntminitape
|
||||
|
||||
SCSIPORT_API
|
||||
VOID DDKCDECLAPI
|
||||
VOID __cdecl
|
||||
ScsiDebugPrint(
|
||||
ULONG DebugPrintLevel,
|
||||
PCCHAR DebugMessage,
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
|
||||
#define DDKFASTAPI __fastcall
|
||||
#define FASTCALL __fastcall
|
||||
#define DDKCDECLAPI __cdecl
|
||||
|
||||
ULONG DbgPrint(PCCH Format,...);
|
||||
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
</if>
|
||||
|
||||
<if property="ARCH" value="amd64">
|
||||
<directory name="halx86">
|
||||
<xi:include href="halx86/directory.rbuild" />
|
||||
</directory>
|
||||
<directory name="halx86">
|
||||
<xi:include href="halx86/directory.rbuild" />
|
||||
</directory>
|
||||
</if>
|
||||
|
||||
<if property="ARCH" value="powerpc">
|
||||
|
|
|
@ -8,15 +8,17 @@
|
|||
/* INCLUDES ******************************************************************/
|
||||
|
||||
#include <asm.h>
|
||||
#include <internal/i386/asmmacro.S>
|
||||
.intel_syntax noprefix
|
||||
|
||||
/* GLOBALS *******************************************************************/
|
||||
|
||||
.globl _HalpPerfCounter
|
||||
_HalpLastPerfCounterLow: .long 0
|
||||
_HalpLastPerfCounterHigh: .long 0
|
||||
_HalpPerfCounter:
|
||||
_HalpPerfCounterLow: .long 0
|
||||
_HalpPerfCounterHigh: .long 0
|
||||
_HalpSystemHardwareFlags: .long 0
|
||||
|
||||
_UnhandledMsg:
|
||||
.asciz "\n\x7\x7!!! Unhandled or Unexpected Code at line: %lx!!!\n"
|
||||
|
@ -327,6 +329,7 @@ AndItsNotYou:
|
|||
ret
|
||||
.endfunc
|
||||
|
||||
#ifndef _MINIHAL_
|
||||
.globl _KeStallExecutionProcessor@4
|
||||
.func KeStallExecutionProcessor@4
|
||||
_KeStallExecutionProcessor@4:
|
||||
|
@ -357,6 +360,7 @@ Done:
|
|||
/* Return */
|
||||
ret 4
|
||||
.endfunc
|
||||
#endif
|
||||
|
||||
.global _KeQueryPerformanceCounter@4
|
||||
.func KeQueryPerformanceCounter@4
|
||||
|
@ -517,72 +521,3 @@ InvalidCount:
|
|||
mov _HalpLastPerfCounterHigh, eax
|
||||
jmp LoopPreInt
|
||||
.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;
|
||||
}
|
||||
|
||||
#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
|
||||
* PURPOSE: Spinlock and Queued Spinlock Support
|
||||
* PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
|
||||
* Timo Kreuzer (timo.kreuzer@reactos.org)
|
||||
*/
|
||||
|
||||
/* INCLUDES ******************************************************************/
|
||||
|
||||
/* Enable this (and the define in irq.S) to make UP HAL work for MP Kernel */
|
||||
/* #define CONFIG_SMP */
|
||||
/* This file is compiled twice. Once for UP and once for MP */
|
||||
|
||||
#include <hal.h>
|
||||
#define NDEBUG
|
||||
|
@ -30,18 +28,6 @@ KSPIN_LOCK HalpSystemHardwareLock;
|
|||
|
||||
#ifdef _M_IX86
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
NTAPI
|
||||
KeAcquireSpinLock(PKSPIN_LOCK SpinLock,
|
||||
PKIRQL OldIrql)
|
||||
{
|
||||
/* Call the fastcall function */
|
||||
*OldIrql = KfAcquireSpinLock(SpinLock);
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
|
@ -59,18 +45,6 @@ KeAcquireSpinLockRaiseToSynch(PKSPIN_LOCK SpinLock)
|
|||
return OldIrql;
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
NTAPI
|
||||
KeReleaseSpinLock(PKSPIN_LOCK SpinLock,
|
||||
KIRQL NewIrql)
|
||||
{
|
||||
/* Call the fastcall function */
|
||||
KfReleaseSpinLock(SpinLock, NewIrql);
|
||||
}
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
|
@ -238,31 +212,6 @@ KeTryToAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber,
|
|||
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
|
||||
|
||||
VOID
|
||||
|
|
|
@ -17,20 +17,26 @@
|
|||
</directory>
|
||||
<file>beep.c</file>
|
||||
<file>cmos.c</file>
|
||||
<file>display.c</file>
|
||||
<file>dma.c</file>
|
||||
<file>drive.c</file>
|
||||
<file>display.c</file>
|
||||
<file>halinit.c</file>
|
||||
<file>misc.c</file>
|
||||
<file>profil.c</file>
|
||||
<file>reboot.c</file>
|
||||
<file>sysinfo.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">
|
||||
<file>bios.c</file>
|
||||
<file>halinit.c</file>
|
||||
<file>misc.c</file>
|
||||
<file>pic.c</file>
|
||||
<file>trap.S</file>
|
||||
<file>usage.c</file>
|
||||
<file>trap.S</file>
|
||||
<directory name="i386">
|
||||
<file>portio.c</file>
|
||||
<file>systimer.S</file>
|
||||
|
@ -57,6 +63,7 @@
|
|||
<pch>hal.h</pch>
|
||||
</directory>
|
||||
</module>
|
||||
|
||||
<module name="mini_hal" type="objectlibrary">
|
||||
<include>include</include>
|
||||
<include base="ntoskrnl">include</include>
|
||||
|
@ -78,6 +85,7 @@
|
|||
<file>dma.c</file>
|
||||
<file>display.c</file>
|
||||
<file>drive.c</file>
|
||||
<file>misc.c</file>
|
||||
<file>profil.c</file>
|
||||
<file>reboot.c</file>
|
||||
<file>spinlock.c</file>
|
||||
|
@ -85,15 +93,9 @@
|
|||
<file>timer.c</file>
|
||||
<file>usage.c</file>
|
||||
<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">
|
||||
<file>portio.c</file>
|
||||
<file>systimer.S</file>
|
||||
<file>v86.s</file>
|
||||
</directory>
|
||||
</if>
|
||||
<if property="ARCH" value="amd64">
|
||||
|
@ -109,6 +111,8 @@
|
|||
</directory>
|
||||
<directory name="up">
|
||||
<file>halinit_up.c</file>
|
||||
<file>pic.c</file>
|
||||
<file>processor.c</file>
|
||||
</directory>
|
||||
</module>
|
||||
</group>
|
||||
|
|
|
@ -9,6 +9,10 @@
|
|||
<directory name="generic">
|
||||
<file>spinlock.c</file>
|
||||
</directory>
|
||||
<directory name="up">
|
||||
<file>pic.c</file>
|
||||
<file>processor.c</file>
|
||||
</directory>
|
||||
<directory name="up">
|
||||
<file>processor.c</file>
|
||||
<if property="ARCH" value="i386">
|
||||
|
|
|
@ -6,31 +6,22 @@
|
|||
<bootstrap installbase="$(CDOUTPUT)" nameoncd="hal.dll" />
|
||||
<include base="hal">include</include>
|
||||
<include base="ntoskrnl">include</include>
|
||||
<include base="x86emu">.</include>
|
||||
<!-- include base="x86emu">.</include -->
|
||||
<define name="_DISABLE_TIDENTS" />
|
||||
<define name="_NTHAL_" />
|
||||
<define name="_X86BIOS_" />
|
||||
<library>hal_generic</library>
|
||||
<library>hal_generic_up</library>
|
||||
<library>ntoskrnl</library>
|
||||
<library>x86emu</library>
|
||||
|
||||
<directory name="up">
|
||||
<file>halinit_up.c</file>
|
||||
<file>halup.rc</file>
|
||||
</directory>
|
||||
<!-- library>x86emu</library -->
|
||||
|
||||
<directory name="mp">
|
||||
<file>halinit_mp.c</file>
|
||||
<file>halmp.rc</file>
|
||||
<directory name="amd64">
|
||||
<file>mps.S</file>
|
||||
<!-- file>mps.S</file -->
|
||||
</directory>
|
||||
</directory>
|
||||
<directory name="generic">
|
||||
<directory name="amd64">
|
||||
<file>x86bios.c</file>
|
||||
</directory>
|
||||
</directory>
|
||||
|
||||
</module>
|
||||
</group>
|
||||
|
||||
|
|
|
@ -14,11 +14,13 @@
|
|||
<library>ntoskrnl</library>
|
||||
<library>libcntpr</library>
|
||||
<directory name="mp">
|
||||
<file>mpsirql.c</file>
|
||||
<directory name="i386">
|
||||
<file>mps.S</file>
|
||||
<file>mpsboot.asm</file>
|
||||
</directory>
|
||||
<if property="ARCH" value="i386">
|
||||
<directory name="i386">
|
||||
<file>mps.S</file>
|
||||
<file>mpsboot.asm</file>
|
||||
<file>mpsirql.c</file>
|
||||
</directory>
|
||||
</if>
|
||||
</directory>
|
||||
</module>
|
||||
</group>
|
||||
|
|
|
@ -685,6 +685,15 @@ VOID
|
|||
NTAPI
|
||||
HalpSetInterruptGate(ULONG Index, PVOID Address);
|
||||
|
||||
|
||||
VOID
|
||||
FASTCALL
|
||||
KeUpdateSystemTime(
|
||||
IN PKTRAP_FRAME TrapFrame,
|
||||
IN ULONG Increment,
|
||||
IN KIRQL OldIrql
|
||||
);
|
||||
|
||||
#ifdef _M_AMD64
|
||||
#define KfLowerIrql KeLowerIrql
|
||||
#ifndef CONFIG_SMP
|
||||
|
|
|
@ -143,6 +143,7 @@ KfLowerIrql (KIRQL NewIrql)
|
|||
HalpLowerIrql (NewIrql, FALSE);
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* KfRaiseIrql
|
||||
|
@ -191,7 +192,6 @@ KfRaiseIrql (KIRQL NewIrql)
|
|||
return OldIrql;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* 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 ) \
|
||||
{ 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); }
|
||||
|
||||
#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">
|
||||
<file>amstream.idl</file>
|
||||
<file>austream.idl</file>
|
||||
<file>bdatif.idl</file>
|
||||
<file>ddstream.idl</file>
|
||||
<file>dmodshow.idl</file>
|
||||
<file>mixerocx.idl</file>
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
#define PASTE2(x,y) x##y
|
||||
#define PASTE(x,y) PASTE2(x,y)
|
||||
|
||||
|
|
|
@ -703,7 +703,7 @@ typedef struct _PROCESS_BASIC_INFORMATION
|
|||
KPRIORITY BasePriority;
|
||||
ULONG_PTR UniqueProcessId;
|
||||
ULONG_PTR InheritedFromUniqueProcessId;
|
||||
} PROCESS_BASIC_INFORMATION,*PPROCESS_BASIC_INFORMATION;
|
||||
} PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION;
|
||||
|
||||
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
|
||||
(DDKAPI*BCLASS_DISABLE_STATUS_NOTIFY)(
|
||||
(NTAPI *BCLASS_DISABLE_STATUS_NOTIFY)(
|
||||
IN PVOID Context);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI*BCLASS_QUERY_INFORMATION)(
|
||||
(NTAPI *BCLASS_QUERY_INFORMATION)(
|
||||
IN PVOID Context,
|
||||
IN ULONG BatteryTag,
|
||||
IN BATTERY_QUERY_INFORMATION_LEVEL Level,
|
||||
|
@ -194,25 +194,25 @@ typedef NTSTATUS
|
|||
OUT PULONG ReturnedLength);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI*BCLASS_QUERY_STATUS)(
|
||||
(NTAPI *BCLASS_QUERY_STATUS)(
|
||||
IN PVOID Context,
|
||||
IN ULONG BatteryTag,
|
||||
OUT PBATTERY_STATUS BatteryStatus);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI*BCLASS_QUERY_TAG)(
|
||||
(NTAPI *BCLASS_QUERY_TAG)(
|
||||
IN PVOID Context,
|
||||
OUT PULONG BatteryTag);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI*BCLASS_SET_INFORMATION)(
|
||||
(NTAPI *BCLASS_SET_INFORMATION)(
|
||||
IN PVOID Context,
|
||||
IN ULONG BatteryTag,
|
||||
IN BATTERY_SET_INFORMATION_LEVEL Level,
|
||||
IN PVOID Buffer OPTIONAL);
|
||||
|
||||
typedef NTSTATUS
|
||||
(DDKAPI*BCLASS_SET_STATUS_NOTIFY)(
|
||||
(NTAPI *BCLASS_SET_STATUS_NOTIFY)(
|
||||
IN PVOID Context,
|
||||
IN ULONG BatteryTag,
|
||||
IN PBATTERY_NOTIFY BatteryNotify);
|
||||
|
@ -239,21 +239,21 @@ typedef struct _BATTERY_MINIPORT_INFO {
|
|||
|
||||
BCLASSAPI
|
||||
NTSTATUS
|
||||
DDKAPI
|
||||
NTAPI
|
||||
BatteryClassInitializeDevice(
|
||||
IN PBATTERY_MINIPORT_INFO MiniportInfo,
|
||||
IN PVOID *ClassData);
|
||||
|
||||
BCLASSAPI
|
||||
NTSTATUS
|
||||
DDKAPI
|
||||
NTAPI
|
||||
BatteryClassIoctl(
|
||||
IN PVOID ClassData,
|
||||
IN PIRP Irp);
|
||||
|
||||
BCLASSAPI
|
||||
NTSTATUS
|
||||
DDKAPI
|
||||
NTAPI
|
||||
BatteryClassQueryWmiDataBlock(
|
||||
IN PVOID ClassData,
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
|
@ -265,13 +265,13 @@ BatteryClassQueryWmiDataBlock(
|
|||
|
||||
BCLASSAPI
|
||||
NTSTATUS
|
||||
DDKAPI
|
||||
NTAPI
|
||||
BatteryClassStatusNotify(
|
||||
IN PVOID ClassData);
|
||||
|
||||
BCLASSAPI
|
||||
NTSTATUS
|
||||
DDKAPI
|
||||
NTAPI
|
||||
BatteryClassSystemControl(
|
||||
IN PVOID ClassData,
|
||||
IN PVOID WmiLibContext, /* PWMILIB_CONTEXT */
|
||||
|
@ -281,7 +281,7 @@ BatteryClassSystemControl(
|
|||
|
||||
BCLASSAPI
|
||||
NTSTATUS
|
||||
DDKAPI
|
||||
NTAPI
|
||||
BatteryClassUnload(
|
||||
IN PVOID ClassData);
|
||||
|
||||
|
|
|
@ -20,7 +20,8 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#ifndef _CFG_INCLUDED_
|
||||
#pragma once
|
||||
|
||||
#define _CFG_INCLUDED_
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -77,7 +78,26 @@ extern "C" {
|
|||
#define CM_PROB_DRIVER_BLOCKED 0x00000030
|
||||
#define CM_PROB_REGISTRY_TOO_LARGE 0x00000031
|
||||
#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_BOOTCONFIG 0x00000001
|
||||
|
@ -95,24 +115,24 @@ extern "C" {
|
|||
#define LCPRI_DISABLED 0x0000FFFF
|
||||
#define MAX_LCPRI 0x0000FFFF
|
||||
|
||||
#define DN_ROOT_ENUMERATED 0x00000001 /* Was enumerated by ROOT */
|
||||
#define DN_DRIVER_LOADED 0x00000002 /* Has Register_Device_Driver */
|
||||
#define DN_ENUM_LOADED 0x00000004 /* Has Register_Enumerator */
|
||||
#define DN_STARTED 0x00000008 /* Is currently configured */
|
||||
#define DN_MANUAL 0x00000010 /* Manually installed */
|
||||
#define DN_NEED_TO_ENUM 0x00000020 /* May need reenumeration */
|
||||
#define DN_NOT_FIRST_TIME 0x00000040 /* Has received a config (Win9x only) */
|
||||
#define DN_HARDWARE_ENUM 0x00000080 /* Enum generates hardware ID */
|
||||
#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_PROBLEM 0x00000400 /* Need device installer */
|
||||
#define DN_FILTERED 0x00000800 /* Is filtered */
|
||||
#define DN_MOVED 0x00001000 /* Has been moved (Win9x only) */
|
||||
#define DN_DISABLEABLE 0x00002000 /* Can be rebalanced */
|
||||
#define DN_REMOVABLE 0x00004000 /* Can be removed */
|
||||
#define DN_PRIVATE_PROBLEM 0x00008000 /* Has a private problem */
|
||||
#define DN_MF_PARENT 0x00010000 /* Multi function parent */
|
||||
#define DN_MF_CHILD 0x00020000 /* Multi function child */
|
||||
#define DN_ROOT_ENUMERATED 0x00000001 /* Was enumerated by ROOT */
|
||||
#define DN_DRIVER_LOADED 0x00000002 /* Has Register_Device_Driver */
|
||||
#define DN_ENUM_LOADED 0x00000004 /* Has Register_Enumerator */
|
||||
#define DN_STARTED 0x00000008 /* Is currently configured */
|
||||
#define DN_MANUAL 0x00000010 /* Manually installed */
|
||||
#define DN_NEED_TO_ENUM 0x00000020 /* May need reenumeration */
|
||||
#define DN_NOT_FIRST_TIME 0x00000040 /* Has received a config (Win9x only) */
|
||||
#define DN_HARDWARE_ENUM 0x00000080 /* Enum generates hardware ID */
|
||||
#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_PROBLEM 0x00000400 /* Need device installer */
|
||||
#define DN_FILTERED 0x00000800 /* Is filtered */
|
||||
#define DN_MOVED 0x00001000 /* Has been moved (Win9x only) */
|
||||
#define DN_DISABLEABLE 0x00002000 /* Can be rebalanced */
|
||||
#define DN_REMOVABLE 0x00004000 /* Can be removed */
|
||||
#define DN_PRIVATE_PROBLEM 0x00008000 /* Has a private problem */
|
||||
#define DN_MF_PARENT 0x00010000 /* Multi function parent */
|
||||
#define DN_MF_CHILD 0x00020000 /* Multi function child */
|
||||
#define DN_WILL_BE_REMOVED 0x00040000
|
||||
#define DN_NOT_FIRST_TIMEE 0x00080000
|
||||
#define DN_STOP_FREE_RES 0x00100000
|
||||
|
@ -128,11 +148,33 @@ extern "C" {
|
|||
#define DN_NO_SHOW_IN_DM 0x40000000
|
||||
#define DN_BOOT_LOG_PROB 0x80000000
|
||||
|
||||
#define DN_NEED_RESTART DN_LIAR
|
||||
#define DN_DRIVER_BLOCKED DN_NOT_FIRST_TIME
|
||||
#define DN_LEGACY_DRIVER DN_MOVED
|
||||
#if (NTDDI_VERSION >= NTDDI_WINXP)
|
||||
|
||||
#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
|
||||
|
||||
#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 {
|
||||
PNP_VetoTypeUnknown,
|
||||
|
@ -149,14 +191,7 @@ typedef enum _PNP_VETO_TYPE {
|
|||
PNP_VetoLegacyDriver
|
||||
} 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
|
||||
}
|
||||
#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
|
||||
|
||||
//
|
||||
// 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 */
|
||||
|
||||
|
|
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
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef GUID_DEFINED
|
||||
#include <guiddef.h>
|
||||
|
@ -84,30 +77,27 @@
|
|||
#define VP_CP_CMD_CHANGE 0x00000004
|
||||
|
||||
typedef struct _VIDEOPARAMETERS {
|
||||
GUID Guid;
|
||||
ULONG dwOffset;
|
||||
ULONG dwCommand;
|
||||
ULONG dwFlags;
|
||||
ULONG dwMode;
|
||||
ULONG dwTVStandard;
|
||||
ULONG dwAvailableModes;
|
||||
ULONG dwAvailableTVStandard;
|
||||
ULONG dwFlickerFilter;
|
||||
ULONG dwOverScanX;
|
||||
ULONG dwOverScanY;
|
||||
ULONG dwMaxUnscaledX;
|
||||
ULONG dwMaxUnscaledY;
|
||||
ULONG dwPositionX;
|
||||
ULONG dwPositionY;
|
||||
ULONG dwBrightness;
|
||||
ULONG dwContrast;
|
||||
ULONG dwCPType;
|
||||
ULONG dwCPCommand;
|
||||
ULONG dwCPStandard;
|
||||
ULONG dwCPKey;
|
||||
ULONG bCP_APSTriggerBits;
|
||||
UCHAR bOEMCopyProtection[256];
|
||||
} VIDEOPARAMETERS, *PVIDEOPARAMETERS, FAR *LPVIDEOPARAMETERS;
|
||||
|
||||
|
||||
#endif /* __TVOUT_H */
|
||||
GUID Guid;
|
||||
ULONG dwOffset;
|
||||
ULONG dwCommand;
|
||||
ULONG dwFlags;
|
||||
ULONG dwMode;
|
||||
ULONG dwTVStandard;
|
||||
ULONG dwAvailableModes;
|
||||
ULONG dwAvailableTVStandard;
|
||||
ULONG dwFlickerFilter;
|
||||
ULONG dwOverScanX;
|
||||
ULONG dwOverScanY;
|
||||
ULONG dwMaxUnscaledX;
|
||||
ULONG dwMaxUnscaledY;
|
||||
ULONG dwPositionX;
|
||||
ULONG dwPositionY;
|
||||
ULONG dwBrightness;
|
||||
ULONG dwContrast;
|
||||
ULONG dwCPType;
|
||||
ULONG dwCPCommand;
|
||||
ULONG dwCPStandard;
|
||||
ULONG dwCPKey;
|
||||
ULONG bCP_APSTriggerBits;
|
||||
UCHAR bOEMCopyProtection[256];
|
||||
} VIDEOPARAMETERS, *PVIDEOPARAMETERS, *LPVIDEOPARAMETERS;
|
|
@ -665,6 +665,8 @@ typedef struct _USB_DEVICE_PERFORMANCE_INFO {
|
|||
|
||||
#include <poppack.h>
|
||||
|
||||
#endif /* USB_KERNEL_IOCTL */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#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