OSDN Git Service

Merge branch 'feature/#36529_SlimDXからSharpDXへの移行' into develop
[dtxmania/dtxmania.git] / SlimDXc_Jun2010(VC++2008) / source / directinput / DeviceProperties.cpp
diff --git a/SlimDXc_Jun2010(VC++2008)/source/directinput/DeviceProperties.cpp b/SlimDXc_Jun2010(VC++2008)/source/directinput/DeviceProperties.cpp
deleted file mode 100644 (file)
index 08d94b9..0000000
+++ /dev/null
@@ -1,622 +0,0 @@
-#include "stdafx.h"\r
-/*\r
-* Copyright (c) 2007-2010 SlimDX Group\r
-* \r
-* Permission is hereby granted, free of charge, to any person obtaining a copy\r
-* of this software and associated documentation files (the "Software"), to deal\r
-* in the Software without restriction, including without limitation the rights\r
-* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
-* copies of the Software, and to permit persons to whom the Software is\r
-* furnished to do so, subject to the following conditions:\r
-* \r
-* The above copyright notice and this permission notice shall be included in\r
-* all copies or substantial portions of the Software.\r
-* \r
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
-* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
-* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
-* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
-* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
-* THE SOFTWARE.\r
-*/\r
-\r
-#include <windows.h>\r
-#include <dinput.h>\r
-#include <string>\r
-\r
-#include "DirectInputException.h"\r
-\r
-#include "Enums.h"\r
-#include "DeviceConstantConverter.h"\r
-#include "DeviceProperties.h"\r
-#include "Guids.h"\r
-\r
-using namespace System;\r
-using namespace System::Runtime::InteropServices;\r
-\r
-namespace SlimDX\r
-{\r
-namespace DirectInput\r
-{\r
-       DeviceProperties::DeviceProperties( IDirectInputDevice8W *pointer )\r
-       {\r
-               this->pointer = pointer;\r
-       }\r
-\r
-       String^ DeviceProperties::GetKeyName( Key key )\r
-       {\r
-               DIPROPSTRING dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPSTRING );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = DeviceConstantConverter::KeyToDIK( key );\r
-               dip.diph.dwHow = DIPH_BYID;\r
-\r
-               hr = pointer->GetProperty( DIPROP_KEYNAME, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return nullptr;\r
-\r
-               return gcnew String( dip.wsz );\r
-       }\r
-\r
-       String^ DeviceProperties::PortDisplayName::get()\r
-       {\r
-               DIPROPSTRING dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPSTRING );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_GETPORTDISPLAYNAME, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return nullptr;\r
-\r
-               return gcnew String( dip.wsz );\r
-       }\r
-\r
-       String^ DeviceProperties::InstanceName::get()\r
-       {\r
-               DIPROPSTRING dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPSTRING );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_INSTANCENAME, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return nullptr;\r
-\r
-               return gcnew String( dip.wsz );\r
-       }\r
-\r
-       void DeviceProperties::InstanceName::set( String^ value )\r
-       {\r
-               DIPROPSTRING dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPSTRING );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               WCHAR chars[260] = { NULL };\r
-               for( int i = 0; i < value->Length; i++ )\r
-                       chars[i] = value[i];\r
-               memcpy( dip.wsz, chars, sizeof( WCHAR ) * 260 );\r
-\r
-               hr = pointer->SetProperty( DIPROP_INSTANCENAME, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-       }\r
-\r
-       String^ DeviceProperties::ProductName::get()\r
-       {\r
-               DIPROPSTRING dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPSTRING );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_PRODUCTNAME, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return nullptr;\r
-\r
-               return gcnew String( dip.wsz );\r
-       }\r
-\r
-       void DeviceProperties::ProductName::set( String^ value )\r
-       {\r
-               DIPROPSTRING dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPSTRING );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               WCHAR chars[260] = { NULL };\r
-               for( int i = 0; i < value->Length; i++ )\r
-                       chars[i] = value[i];\r
-               memcpy( dip.wsz, chars, sizeof( WCHAR ) * 260 );\r
-\r
-               hr = pointer->SetProperty( DIPROP_PRODUCTNAME, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-       }\r
-\r
-       String^ DeviceProperties::TypeName::get()\r
-       {\r
-               DIPROPSTRING dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPSTRING );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_TYPENAME, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return nullptr;\r
-\r
-               return gcnew String( dip.wsz );\r
-       }\r
-\r
-       String^ DeviceProperties::UserName::get()\r
-       {\r
-               DIPROPSTRING dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPSTRING );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_USERNAME, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return nullptr;\r
-\r
-               return gcnew String( dip.wsz );\r
-       }\r
-\r
-       int DeviceProperties::GetKeyCode( Key key )\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = DeviceConstantConverter::KeyToDIK( key );\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_SCANCODE, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return 0;\r
-\r
-               return dip.dwData;\r
-       }\r
-\r
-       Object^ DeviceProperties::ApplicationData::get()\r
-       {\r
-               DIPROPPOINTER dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPPOINTER );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_APPDATA, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) || dip.uData == NULL )\r
-                       return nullptr;\r
-\r
-               IntPtr pointer( reinterpret_cast<void*>( dip.uData ) );\r
-               GCHandle handle = GCHandle::FromIntPtr( pointer );\r
-               if( !handle.IsAllocated )\r
-                       return nullptr;\r
-\r
-               Object^ obj = handle.Target;\r
-               handle.Free();\r
-               return obj;\r
-       }\r
-\r
-       void DeviceProperties::ApplicationData::set( Object^ value )\r
-       {\r
-               DIPROPPOINTER dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPPOINTER );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               GCHandle handle = GCHandle::Alloc( value, GCHandleType::Pinned );\r
-               dip.uData = reinterpret_cast<UINT_PTR>( handle.ToIntPtr( handle ).ToPointer() );\r
-\r
-               hr = pointer->SetProperty( DIPROP_APPDATA, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               handle.Free();\r
-       }\r
-\r
-       bool DeviceProperties::AutoCenter::get()\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_AUTOCENTER, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( dip.dwData == DIPROPAUTOCENTER_OFF )\r
-                       return false;\r
-               else\r
-                       return true;\r
-       }\r
-\r
-       void DeviceProperties::AutoCenter::set( bool value )\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               if( value )\r
-                       dip.dwData = DIPROPAUTOCENTER_ON;\r
-               else\r
-                       dip.dwData = DIPROPAUTOCENTER_OFF;\r
-\r
-               hr = pointer->SetProperty( DIPROP_AUTOCENTER, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-       }\r
-\r
-       DeviceAxisMode DeviceProperties::AxisMode::get()\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_AXISMODE, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               return static_cast<DeviceAxisMode>( dip.dwData );\r
-       }\r
-\r
-       void DeviceProperties::AxisMode::set( DeviceAxisMode value )\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-               dip.dwData = static_cast<DWORD>( value );\r
-\r
-               hr = pointer->SetProperty( DIPROP_AXISMODE, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-       }\r
-\r
-       int DeviceProperties::BufferSize::get()\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_BUFFERSIZE, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return 0;\r
-\r
-               return dip.dwData;\r
-       }\r
-\r
-       void DeviceProperties::BufferSize::set( int value )\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-               dip.dwData = value;\r
-\r
-               hr = pointer->SetProperty( DIPROP_BUFFERSIZE, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-       }\r
-\r
-       int DeviceProperties::DeadZone::get()\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_DEADZONE, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return 0;\r
-\r
-               return dip.dwData;\r
-       }\r
-\r
-       void DeviceProperties::DeadZone::set( int value )\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-               dip.dwData = value;\r
-\r
-               hr = pointer->SetProperty( DIPROP_DEADZONE, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-       }\r
-\r
-       int DeviceProperties::ForceFeedbackGain::get()\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_FFGAIN, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return 0;\r
-\r
-               return dip.dwData;\r
-       }\r
-\r
-       void DeviceProperties::ForceFeedbackGain::set( int value )\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-               dip.dwData = value;\r
-\r
-               hr = pointer->SetProperty( DIPROP_FFGAIN, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-       }\r
-\r
-       int DeviceProperties::MemoryLoad::get()\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_FFLOAD, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return 0;\r
-\r
-               return dip.dwData;\r
-       }\r
-\r
-       int DeviceProperties::Granularity::get()\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_GRANULARITY, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return 0;\r
-\r
-               return dip.dwData;\r
-       }\r
-\r
-       int DeviceProperties::JoystickId::get()\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_JOYSTICKID, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return 0;\r
-\r
-               return dip.dwData;\r
-       }\r
-\r
-       int DeviceProperties::Saturation::get()\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_SATURATION, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return 0;\r
-\r
-               return dip.dwData;\r
-       }\r
-\r
-       void DeviceProperties::Saturation::set( int value )\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-               dip.dwData = value;\r
-\r
-               hr = pointer->SetProperty( DIPROP_SATURATION, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-       }\r
-\r
-       Guid DeviceProperties::ClassGuid::get()\r
-       {\r
-               DIPROPGUIDANDPATH dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPGUIDANDPATH );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_GUIDANDPATH, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return Guid::Empty;\r
-\r
-               return Utilities::ConvertNativeGuid( dip.guidClass );\r
-       }\r
-\r
-       String^ DeviceProperties::InterfacePath::get()\r
-       {\r
-               DIPROPGUIDANDPATH dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPGUIDANDPATH );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_GUIDANDPATH, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return nullptr;\r
-\r
-               return gcnew String( dip.wszPath );\r
-       }\r
-\r
-       int DeviceProperties::VendorId::get()\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_VIDPID, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return 0;\r
-\r
-               return LOWORD( dip.dwData );\r
-       }\r
-\r
-       int DeviceProperties::ProductId::get()\r
-       {\r
-               DIPROPDWORD dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPDWORD );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_VIDPID, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return 0;\r
-\r
-               return HIWORD( dip.dwData );\r
-       }\r
-\r
-       int DeviceProperties::LowerRange::get()\r
-       {\r
-               DIPROPRANGE dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPRANGE );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_RANGE, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return 0;\r
-\r
-               return dip.lMin;\r
-       }\r
-\r
-       int DeviceProperties::UpperRange::get()\r
-       {\r
-               DIPROPRANGE dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPRANGE );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-\r
-               hr = pointer->GetProperty( DIPROP_RANGE, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-\r
-               if( FAILED( hr ) )\r
-                       return 0;\r
-\r
-               return dip.lMax;\r
-       }\r
-\r
-       void DeviceProperties::SetRange( int lowerRange, int upperRange )\r
-       {\r
-               DIPROPRANGE dip;\r
-               HRESULT hr;\r
-               dip.diph.dwSize = sizeof( DIPROPRANGE );\r
-               dip.diph.dwHeaderSize = sizeof( DIPROPHEADER );\r
-               dip.diph.dwObj = 0;\r
-               dip.diph.dwHow = DIPH_DEVICE;\r
-               dip.lMin = lowerRange;\r
-               dip.lMax = upperRange;\r
-\r
-               hr = pointer->SetProperty( DIPROP_RANGE, &dip.diph );\r
-               RECORD_DINPUT( hr );\r
-       }\r
-}\r
-}
\ No newline at end of file