/***************************************************************************** * * DIGenDef.c * * Copyright (c) 1996 Microsoft Corporation. All Rights Reserved. * * Abstract: * * Default IDirectInputDevice callback. * * Contents: * * CDefDcb_Acquire * CDefDcb_Unacquire * CDefDcb_GetProperty * CDefDcb_SetProperty * CDefDcb_SetCooperativeLevel * CDefDcb_CookDeviceData * CDefDcb_CreateEffect * CDefDcb_GetFFConfigKey * CDefDcb_SendDeviceData * CDefDcb_Poll * CDefDcb_MapUsage * CDefDcb_GetUsage * *****************************************************************************/ #include "dinputpr.h" /***************************************************************************** * * The sqiffle for this file. * *****************************************************************************/ #define sqfl sqflNil /***************************************************************************** * * Note! These are generic default functions that all return * E_NOTIMPL. * *****************************************************************************/ /***************************************************************************** * * @doc INTERNAL * * @method HRESULT | CDefDcb | Acquire | * * Tell the device driver to begin data acquisition. * * It is the caller's responsibility to have set the * data format before obtaining acquisition. * * @returns * * Returns a COM error code. The following error codes are * intended to be illustrative and not necessarily comprehensive. * * = : The operation completed successfully. * * : The device could not be acquired. * *****************************************************************************/ STDMETHODIMP CDefDcb_Acquire(PDICB pdcb) { HRESULT hres; EnterProcI(IDirectInputDeviceCallback::Def::Acquire, (_ "p", pdcb)); hres = S_FALSE; ExitOleProcR(); return hres; } /***************************************************************************** * * @doc INTERNAL * * @method HRESULT | CDefDcb | Unacquire | * * Tell the device driver to stop data acquisition. * * It is the caller's responsibility to call this only * when the device has been acquired. * * @returns * * Returns a COM error code. The following error codes are * intended to be illustrative and not necessarily comprehensive. * * = : The operation completed successfully. * * : The device was not acquired. * *****************************************************************************/ STDMETHODIMP CDefDcb_Unacquire(PDICB pdcb) { HRESULT hres; EnterProcI(IDirectInputDeviceCallback::Def::Unacquire, (_ "p", pdcb)); hres = S_FALSE; ExitOleProcR(); return hres; } /***************************************************************************** * * @doc INTERNAL * * @method void | CDefDcb | GetProperty | * * Retrieve a device property. * * @parm IN LPCDIPROPINFO | ppropi | * * Information describing the property being retrieved. * * @parm LPDIPROPHEADER | pdiph | * * Where to put the property value. * * @returns * * nothing happened. * *****************************************************************************/ STDMETHODIMP CDefDcb_GetProperty(PDICB pdcb, LPCDIPROPINFO ppropi, LPDIPROPHEADER pdiph) { HRESULT hres; EnterProcI(IDirectInputDeviceCallback::Def::GetProperty, (_ "pxxp", pdcb, ppropi->pguid, ppropi->iobj, pdiph)); hres = E_NOTIMPL; ExitOleProcR(); return hres; } /***************************************************************************** * * @doc INTERNAL * * @method void | CDefDcb | SetProperty | * * Set a device property. * * @parm IN LPCDIPROPINFO | ppropi | * * Information describing the property being set. * * @parm LPCDIPROPHEADER | pdiph | * * Structure containing property value. * * @returns * * nothing happened. * *****************************************************************************/ STDMETHODIMP CDefDcb_SetProperty(PDICB pdcb, LPCDIPROPINFO ppropi, LPCDIPROPHEADER pdiph) { HRESULT hres; EnterProcI(IDirectInputDeviceCallback::Def::SetProperty, (_ "pxxp", pdcb, ppropi->pguid, ppropi->iobj, pdiph)); hres = E_NOTIMPL; ExitOleProcR(); return hres; } /***************************************************************************** * * @doc INTERNAL * * @method HRESULT | CDefDcb | SetEventNotification | * * Called by DirectInput to inquire whether the device * supports event notifications. * * @parm IN PDM | this | * * The object in question. * * @field HANDLE | h | * * The notification handle, if any. * * @returns * * Returns a COM error code. * * : The operation was begun and should be completed * by the caller by communicating with the . * *****************************************************************************/ STDMETHODIMP CDefDcb_SetEventNotification(PDICB pdcb, HANDLE h) { HRESULT hres; EnterProcI(IDirectInputDeviceCallback::DefDcb::SetEventNotification, (_ "px", pdcb, h)); /* * Yes, we support it. Please do it for me. */ hres = S_FALSE; ExitOleProcR(); return hres; } /***************************************************************************** * * @doc INTERNAL * * @method HRESULT | CDefdcb | SetCooperativeLevel | * * Notify the device of the cooperative level. * * @parm IN HWND | hwnd | * * The window handle. * * @parm IN DWORD | dwFlags | * * The cooperativity level. * * @returns * * Returns a COM error code. * *****************************************************************************/ STDMETHODIMP CDefDcb_SetCooperativeLevel(PDICB pdcb, HWND hwnd, DWORD dwFlags) { HRESULT hres; EnterProcI(IDirectInputDeviceCallback::Def::SetCooperativityLevel, (_ "pxx", pdcb, hwnd, dwFlags)); hres = S_OK; ExitOleProcR(); return hres; } /***************************************************************************** * * @doc INTERNAL * * @method HRESULT | CDefDcb | CookDeviceData | * * Manipulate buffered device data. * * @parm DWORD | cdod | * * Number of objects to cook; zero is a valid value. * * @parm LPDIDEVICEOBJECTDATA | rgdod | * * Array of object data to cook. * * @returns * * : Nothing happened. * ***************************************************************************/ STDMETHODIMP CDefDcb_CookDeviceData ( PDICB pdcb, DWORD cdod, LPDIDEVICEOBJECTDATA rgdod ) { HRESULT hres; EnterProcI(IDirectInputDeviceCallback::Def::CookDeviceData, (_ "pxp", pdcb, cdod, rgdod)); hres = E_NOTIMPL; ExitOleProcR(); return hres; } /***************************************************************************** * * @doc INTERNAL * * @method HRESULT | CDefDcb | CreateEffect | * * Create an interface. * * @parm LPDIRECTINPUTEFFECTSHEPHERD * | ppes | * * Receives the shepherd for the effect driver. * *****************************************************************************/ STDMETHODIMP CDefDcb_CreateEffect(PDICB pdcb, LPDIRECTINPUTEFFECTSHEPHERD *ppes) { HRESULT hres; EnterProcI(IDirectInputDeviceCallback::Kbd::CreateEffect, (_ "p", pdcb)); hres = E_NOTIMPL; ExitOleProcR(); return hres; } /***************************************************************************** * * @doc INTERNAL * * @method HRESULT | CDefDcb | GetFFConfigKey | * * Open and return the registry key that contains * force feedback configuration information. * * @parm DWORD | sam | * * Security access mask. * * @parm PHKEY | phk | * * Receives the registry key. * *****************************************************************************/ STDMETHODIMP CDefDcb_GetFFConfigKey(PDICB pdcb, DWORD sam, PHKEY phk) { HRESULT hres; EnterProcI(IDirectInputDeviceCallback::Def::GetFFConfigKey, (_ "px", pdcb, sam)); hres = E_NOTIMPL; ExitOleProcR(); return hres; } /***************************************************************************** * * @doc INTERNAL * * @method HRESULT | CDefDcb | SendDeviceData | * * Spew some data to the device. * * @parm DWORD | cbdod | * * Size of each object. * * @parm IN LPCDIDEVICEOBJECTDATA | rgdod | * * Array of structures. * * @parm INOUT LPDWORD | pdwInOut | * * Number of items actually sent. * * @parm DWORD | fl | * * Flags. * * @returns * * because we don't support output. * *****************************************************************************/ STDMETHODIMP CDefDcb_SendDeviceData(PDICB pdcb, DWORD cbdod, LPCDIDEVICEOBJECTDATA rgdod, LPDWORD pdwInOut, DWORD fl) { HRESULT hres; EnterProcI(IDirectInputDeviceCallback::Def::SendDeviceData, (_ "p", pdcb)); *pdwInOut = 0; hres = E_NOTIMPL; ExitOleProcR(); return hres; } /***************************************************************************** * * @doc INTERNAL * * @method HRESULT | CDefDcb | Poll | * * Ping down into the driver to get the latest data. * * @returns * * because nothing is pollable. * *****************************************************************************/ STDMETHODIMP CDefDcb_Poll(PDICB pdcb) { HRESULT hres; EnterProcI(IDirectInputDeviceCallback::Def::Poll, (_ "p", pdcb)); hres = S_FALSE; ExitOleProcR(); return hres; } /**************************************************************************** * * @doc INTERNAL * * @method HRESULT | CDefDcb | GetVersions | * * Obtain version information about the force feedback * hardware and driver. * * @returns * * Returns a COM error code. The following error codes are * intended to be illustrative and not necessarily comprehensive. * * = : The operation completed successfully. * * = : No version * information is available. * ***************************************************************************/ STDMETHODIMP CDefDcb_GetVersions(PDICB pdcb, LPDIDRIVERVERSIONS pvers) { HRESULT hres; EnterProcI(IDirectInputDeviceCallback::Def::GetVersions, (_ "p", pdcb)); hres = E_NOTIMPL; ExitOleProcR(); return hres; } /***************************************************************************** * * @doc INTERNAL * * @method HRESULT | CDefDcb | MapUsage | * * Given a usage and usage page (munged into a single * ), find a device object that matches it. * * @parm DWORD | dwUsage | * * The usage page and usage combined into a single * with the macro. * * @parm PINT | piOut | * * Receives the object index of the found object, if successful. * * @returns * * because we don't support usages. * *****************************************************************************/ STDMETHODIMP CDefDcb_MapUsage(PDICB pdcb, DWORD dwUsage, PINT piOut) { HRESULT hres; EnterProcI(IDirectInputDeviceCallback::Def::MapUsage, (_ "p", pdcb)); hres = E_NOTIMPL; ExitOleProcR(); return hres; } /***************************************************************************** * * @doc INTERNAL * * @method DWORD | CDefDcb | GetUsage | * * Given an object index, return the usage and usage page, * packed into a single . * * @parm int | iobj | * * The object index to convert. * * @returns * * Zero because we don't support usages. * *****************************************************************************/ STDMETHODIMP_(DWORD) CDefDcb_GetUsage(PDICB pdcb, int iobj) { EnterProcI(IDirectInputDeviceCallback::Def::GetUsage, (_ "p", pdcb)); return 0; } /***************************************************************************** * * @doc INTERNAL * * @method HRESULT | CDefDcb | SetDIData | * * Set DirectInput version and AppHack data from CDIDev *. * * @parm DWORD | dwVer | * * DirectInput version * * @parm LPVOID | lpdihacks | * * AppHack data * * @returns * * because we can't store the data in the device * specific structure from the default callback. * *****************************************************************************/ STDMETHODIMP CDefDcb_SetDIData(PDICB pdcb, DWORD dwVer, LPVOID lpdihacks) { HRESULT hres; EnterProcI(IDirectInputDeviceCallback::Def::SetDIData, (_ "pup", pdcb, dwVer, lpdihacks)); hres = E_NOTIMPL; ExitOleProcR(); return hres; } /***************************************************************************** * * @doc INTERNAL * * @method HRESULT | CDefDcb | BuildDefaultActionMap | * * Generate default mappings for the objects on this device. * * @parm LPDIACTIONFORMATW | pActionFormat | * * Actions to map. * * @parm DWORD | dwFlags | * * Flags used to indicate mapping preferences. * * @parm REFGUID | guidInst | * * Device instance GUID. * * @returns * * because default mapping has to be done by specific * device callback. * *****************************************************************************/ STDMETHODIMP CDefDcb_BuildDefaultActionMap ( PDICB pdcb, LPDIACTIONFORMATW paf, DWORD dwFlags, REFGUID guidInst ) { HRESULT hres; EnterProcI(IDirectInputDeviceCallback::Def::BuildDefaultActionMap, (_ "ppxG", pdcb, paf, dwFlags, guidInst)); hres = E_NOTIMPL; ExitOleProcR(); return hres; }