mirror of
https://github.com/reactos/reactos.git
synced 2025-07-10 04:24:13 +00:00
Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys.
This commit is contained in:
parent
b94e2d8ca0
commit
c2c66aff7d
24198 changed files with 0 additions and 37285 deletions
831
dll/win32/devmgr/api.cpp
Normal file
831
dll/win32/devmgr/api.cpp
Normal file
|
@ -0,0 +1,831 @@
|
|||
/*
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS devmgr.dll
|
||||
* FILE: dll/win32/devmgr/api.cpp
|
||||
* PURPOSE: devmgr.dll interface
|
||||
* PROGRAMMER: Thomas Weidenmueller (w3seek@users.sourceforge.net)
|
||||
* Ged Murphy (gedmurphy@reactos.org)
|
||||
* NOTES:
|
||||
* Some helpful resources:
|
||||
* http://support.microsoft.com/default.aspx?scid=kb;%5BLN%5D;815320
|
||||
* http://www.jsiinc.com/SUBO/tip7400/rh7482.htm
|
||||
* http://www.jsiinc.com/SUBM/tip6400/rh6490.htm
|
||||
*
|
||||
* UPDATE HISTORY:
|
||||
* 04-04-2004 Created
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
#include "devmgmt/MainWindow.h"
|
||||
#include "properties/properties.h"
|
||||
|
||||
HINSTANCE hDllInstance = NULL;
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
* NAME EXPORTED
|
||||
* DeviceAdvancedPropertiesW
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Invokes the device properties dialog, this version may add some property pages
|
||||
* for some devices
|
||||
*
|
||||
* ARGUMENTS
|
||||
* hWndParent: Handle to the parent window
|
||||
* lpMachineName: Machine Name, NULL is the local machine
|
||||
* lpDeviceID: Specifies the device whose properties are to be shown
|
||||
*
|
||||
* RETURN VALUE
|
||||
* Always returns -1, a call to GetLastError returns 0 if successful
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
INT_PTR
|
||||
WINAPI
|
||||
DeviceAdvancedPropertiesW(IN HWND hWndParent OPTIONAL,
|
||||
IN LPCWSTR lpMachineName OPTIONAL,
|
||||
IN LPCWSTR lpDeviceID)
|
||||
{
|
||||
HDEVINFO hDevInfo;
|
||||
SP_DEVINFO_DATA DevInfoData;
|
||||
HINSTANCE hComCtl32;
|
||||
INT_PTR Ret = -1;
|
||||
|
||||
if (lpDeviceID == NULL)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* dynamically load comctl32 */
|
||||
hComCtl32 = LoadAndInitComctl32();
|
||||
if (hComCtl32 != NULL)
|
||||
{
|
||||
hDevInfo = SetupDiCreateDeviceInfoListEx(NULL,
|
||||
hWndParent,
|
||||
lpMachineName,
|
||||
NULL);
|
||||
if (hDevInfo != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
|
||||
if (SetupDiOpenDeviceInfo(hDevInfo,
|
||||
lpDeviceID,
|
||||
hWndParent,
|
||||
0,
|
||||
&DevInfoData))
|
||||
{
|
||||
Ret = DisplayDeviceAdvancedProperties(hWndParent,
|
||||
lpDeviceID,
|
||||
hDevInfo,
|
||||
&DevInfoData,
|
||||
hComCtl32,
|
||||
lpMachineName,
|
||||
0);
|
||||
}
|
||||
|
||||
SetupDiDestroyDeviceInfoList(hDevInfo);
|
||||
}
|
||||
|
||||
FreeLibrary(hComCtl32);
|
||||
}
|
||||
|
||||
return Ret;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
* NAME EXPORTED
|
||||
* DeviceAdvancedPropertiesA
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Invokes the device properties dialog, this version may add some property pages
|
||||
* for some devices
|
||||
*
|
||||
* ARGUMENTS
|
||||
* hWndParent: Handle to the parent window
|
||||
* lpMachineName: Machine Name, NULL is the local machine
|
||||
* lpDeviceID: Specifies the device whose properties are to be shown
|
||||
*
|
||||
* RETURN VALUE
|
||||
* Always returns -1, a call to GetLastError returns 0 if successful
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
INT_PTR
|
||||
WINAPI
|
||||
DeviceAdvancedPropertiesA(IN HWND hWndParent OPTIONAL,
|
||||
IN LPCSTR lpMachineName OPTIONAL,
|
||||
IN LPCSTR lpDeviceID)
|
||||
{
|
||||
LPWSTR lpMachineNameW = NULL;
|
||||
LPWSTR lpDeviceIDW = NULL;
|
||||
INT_PTR Ret = -1;
|
||||
|
||||
if (lpMachineName != NULL)
|
||||
{
|
||||
if (!(lpMachineNameW = ConvertMultiByteToUnicode(lpMachineName,
|
||||
CP_ACP)))
|
||||
{
|
||||
goto Cleanup;
|
||||
}
|
||||
}
|
||||
if (lpDeviceID != NULL)
|
||||
{
|
||||
if (!(lpDeviceIDW = ConvertMultiByteToUnicode(lpDeviceID,
|
||||
CP_ACP)))
|
||||
{
|
||||
goto Cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
Ret = DeviceAdvancedPropertiesW(hWndParent,
|
||||
lpMachineNameW,
|
||||
lpDeviceIDW);
|
||||
|
||||
Cleanup:
|
||||
if (lpMachineNameW != NULL)
|
||||
{
|
||||
HeapFree(GetProcessHeap(),
|
||||
0,
|
||||
lpMachineNameW);
|
||||
}
|
||||
if (lpDeviceIDW != NULL)
|
||||
{
|
||||
HeapFree(GetProcessHeap(),
|
||||
0,
|
||||
lpDeviceIDW);
|
||||
}
|
||||
|
||||
return Ret;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
* NAME EXPORTED
|
||||
* DevicePropertiesExA
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Invokes the extended device properties dialog
|
||||
*
|
||||
* ARGUMENTS
|
||||
* hWndParent: Handle to the parent window
|
||||
* lpMachineName: Machine Name, NULL is the local machine
|
||||
* lpDeviceID: Specifies the device whose properties are to be shown, optional if
|
||||
* bShowDevMgr is nonzero
|
||||
* dwFlags: This parameter can be a combination of the following flags:
|
||||
* * DPF_DEVICE_STATUS_ACTION: Only valid if bShowDevMgr, causes
|
||||
* the default device status action button
|
||||
* to be clicked (Troubleshoot, Enable
|
||||
* Device, etc)
|
||||
* bShowDevMgr: If non-zero it displays the device manager instead of
|
||||
* the advanced device property dialog
|
||||
*
|
||||
* RETURN VALUE
|
||||
* 1: if bShowDevMgr is non-zero and no error occured
|
||||
* -1: a call to GetLastError returns 0 if successful
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
INT_PTR
|
||||
WINAPI
|
||||
DevicePropertiesExA(IN HWND hWndParent OPTIONAL,
|
||||
IN LPCSTR lpMachineName OPTIONAL,
|
||||
IN LPCSTR lpDeviceID OPTIONAL,
|
||||
IN DWORD dwFlags OPTIONAL,
|
||||
IN BOOL bShowDevMgr)
|
||||
{
|
||||
LPWSTR lpMachineNameW = NULL;
|
||||
LPWSTR lpDeviceIDW = NULL;
|
||||
INT_PTR Ret = -1;
|
||||
|
||||
if (lpMachineName != NULL)
|
||||
{
|
||||
if (!(lpMachineNameW = ConvertMultiByteToUnicode(lpMachineName,
|
||||
CP_ACP)))
|
||||
{
|
||||
goto Cleanup;
|
||||
}
|
||||
}
|
||||
if (lpDeviceID != NULL)
|
||||
{
|
||||
if (!(lpDeviceIDW = ConvertMultiByteToUnicode(lpDeviceID,
|
||||
CP_ACP)))
|
||||
{
|
||||
goto Cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
Ret = DevicePropertiesExW(hWndParent,
|
||||
lpMachineNameW,
|
||||
lpDeviceIDW,
|
||||
dwFlags,
|
||||
bShowDevMgr);
|
||||
|
||||
Cleanup:
|
||||
if (lpMachineNameW != NULL)
|
||||
{
|
||||
HeapFree(GetProcessHeap(),
|
||||
0,
|
||||
lpMachineNameW);
|
||||
}
|
||||
if (lpDeviceIDW != NULL)
|
||||
{
|
||||
HeapFree(GetProcessHeap(),
|
||||
0,
|
||||
lpDeviceIDW);
|
||||
}
|
||||
|
||||
return Ret;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
* NAME EXPORTED
|
||||
* DevicePropertiesExW
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Invokes the extended device properties dialog
|
||||
*
|
||||
* ARGUMENTS
|
||||
* hWndParent: Handle to the parent window
|
||||
* lpMachineName: Machine Name, NULL is the local machine
|
||||
* lpDeviceID: Specifies the device whose properties are to be shown, optional if
|
||||
* bShowDevMgr is nonzero
|
||||
* dwFlags: This parameter can be a combination of the following flags:
|
||||
* * DPF_DEVICE_STATUS_ACTION: Only valid if bShowDevMgr, causes
|
||||
* the default device status action button
|
||||
* to be clicked (Troubleshoot, Enable
|
||||
* Device, etc)
|
||||
* bShowDevMgr: If non-zero it displays the device manager instead of
|
||||
* the advanced device property dialog
|
||||
*
|
||||
* RETURN VALUE
|
||||
* 1: if bShowDevMgr is non-zero and no error occured
|
||||
* -1: a call to GetLastError returns 0 if successful
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
INT_PTR
|
||||
WINAPI
|
||||
DevicePropertiesExW(IN HWND hWndParent OPTIONAL,
|
||||
IN LPCWSTR lpMachineName OPTIONAL,
|
||||
IN LPCWSTR lpDeviceID OPTIONAL,
|
||||
IN DWORD dwFlags OPTIONAL,
|
||||
IN BOOL bShowDevMgr)
|
||||
{
|
||||
INT_PTR Ret = -1;
|
||||
|
||||
if (dwFlags & ~(DPF_EXTENDED | DPF_DEVICE_STATUS_ACTION))
|
||||
{
|
||||
FIXME("DevPropertiesExW: Invalid flags: 0x%x\n",
|
||||
dwFlags & ~(DPF_EXTENDED | DPF_DEVICE_STATUS_ACTION));
|
||||
SetLastError(ERROR_INVALID_FLAGS);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (bShowDevMgr)
|
||||
{
|
||||
FIXME("DevPropertiesExW doesn't support bShowDevMgr!\n");
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
}
|
||||
else
|
||||
{
|
||||
HDEVINFO hDevInfo;
|
||||
SP_DEVINFO_DATA DevInfoData;
|
||||
HINSTANCE hComCtl32;
|
||||
|
||||
if (lpDeviceID == NULL)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* dynamically load comctl32 */
|
||||
hComCtl32 = LoadAndInitComctl32();
|
||||
if (hComCtl32 != NULL)
|
||||
{
|
||||
hDevInfo = SetupDiCreateDeviceInfoListEx(NULL,
|
||||
hWndParent,
|
||||
lpMachineName,
|
||||
NULL);
|
||||
if (hDevInfo != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
|
||||
if (SetupDiOpenDeviceInfo(hDevInfo,
|
||||
lpDeviceID,
|
||||
hWndParent,
|
||||
0,
|
||||
&DevInfoData))
|
||||
{
|
||||
Ret = DisplayDeviceAdvancedProperties(hWndParent,
|
||||
lpDeviceID,
|
||||
hDevInfo,
|
||||
&DevInfoData,
|
||||
hComCtl32,
|
||||
lpMachineName,
|
||||
dwFlags);
|
||||
}
|
||||
|
||||
SetupDiDestroyDeviceInfoList(hDevInfo);
|
||||
}
|
||||
|
||||
FreeLibrary(hComCtl32);
|
||||
}
|
||||
}
|
||||
|
||||
return Ret;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
* NAME EXPORTED
|
||||
* DevicePropertiesA
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Invokes the device properties dialog directly
|
||||
*
|
||||
* ARGUMENTS
|
||||
* hWndParent: Handle to the parent window
|
||||
* lpMachineName: Machine Name, NULL is the local machine
|
||||
* lpDeviceID: Specifies the device whose properties are to be shown
|
||||
* bShowDevMgr: If non-zero it displays the device manager instead of
|
||||
* the device property dialog
|
||||
*
|
||||
* RETURN VALUE
|
||||
* >=0: if no errors occured
|
||||
* -1: if errors occured
|
||||
*
|
||||
* REVISIONS
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
int
|
||||
WINAPI
|
||||
DevicePropertiesA(HWND hWndParent,
|
||||
LPCSTR lpMachineName,
|
||||
LPCSTR lpDeviceID,
|
||||
BOOL bShowDevMgr)
|
||||
{
|
||||
return DevicePropertiesExA(hWndParent,
|
||||
lpMachineName,
|
||||
lpDeviceID,
|
||||
DPF_EXTENDED,
|
||||
bShowDevMgr);
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
* NAME EXPORTED
|
||||
* DevicePropertiesW
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Invokes the device properties dialog directly
|
||||
*
|
||||
* ARGUMENTS
|
||||
* hWndParent: Handle to the parent window
|
||||
* lpMachineName: Machine Name, NULL is the local machine
|
||||
* lpDeviceID: Specifies the device whose properties are to be shown
|
||||
* bShowDevMgr: If non-zero it displays the device manager instead of
|
||||
* the device property dialog
|
||||
*
|
||||
* RETURN VALUE
|
||||
* >=0: if no errors occured
|
||||
* -1: if errors occured
|
||||
*
|
||||
* REVISIONS
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
int
|
||||
WINAPI
|
||||
DevicePropertiesW(HWND hWndParent,
|
||||
LPCWSTR lpMachineName,
|
||||
LPCWSTR lpDeviceID,
|
||||
BOOL bShowDevMgr)
|
||||
{
|
||||
return DevicePropertiesExW(hWndParent,
|
||||
lpMachineName,
|
||||
lpDeviceID,
|
||||
DPF_EXTENDED,
|
||||
bShowDevMgr);
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
* NAME EXPORTED
|
||||
* DeviceProperties_RunDLLA
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Invokes the device properties dialog
|
||||
*
|
||||
* ARGUMENTS
|
||||
* hWndParent: Handle to the parent window
|
||||
* hInst: Handle to the application instance
|
||||
* lpDeviceCmd: A command that includes the DeviceID of the properties to be shown,
|
||||
* also see NOTEs
|
||||
* nCmdShow: Specifies how the window should be shown
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
* REVISIONS
|
||||
*
|
||||
* NOTE
|
||||
* - lpDeviceCmd is a string in the form of "/MachineName MACHINE /DeviceID DEVICEPATH"
|
||||
* (/MachineName is optional). This function only parses this string and eventually
|
||||
* calls DeviceProperties().
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
WINAPI
|
||||
DeviceProperties_RunDLLA(HWND hWndParent,
|
||||
HINSTANCE hInst,
|
||||
LPCSTR lpDeviceCmd,
|
||||
int nCmdShow)
|
||||
{
|
||||
LPWSTR lpDeviceCmdW = NULL;
|
||||
|
||||
if (lpDeviceCmd != NULL)
|
||||
{
|
||||
if ((lpDeviceCmdW = ConvertMultiByteToUnicode(lpDeviceCmd,
|
||||
CP_ACP)))
|
||||
{
|
||||
DeviceProperties_RunDLLW(hWndParent,
|
||||
hInst,
|
||||
lpDeviceCmdW,
|
||||
nCmdShow);
|
||||
}
|
||||
}
|
||||
|
||||
if (lpDeviceCmdW != NULL)
|
||||
{
|
||||
HeapFree(GetProcessHeap(),
|
||||
0,
|
||||
lpDeviceCmdW);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
* NAME EXPORTED
|
||||
* DeviceProperties_RunDLLW
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Invokes the device properties dialog
|
||||
*
|
||||
* ARGUMENTS
|
||||
* hWndParent: Handle to the parent window
|
||||
* hInst: Handle to the application instance
|
||||
* lpDeviceCmd: A command that includes the DeviceID of the properties to be shown,
|
||||
* also see NOTEs
|
||||
* nCmdShow: Specifies how the window should be shown
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
* REVISIONS
|
||||
*
|
||||
* NOTE
|
||||
* - lpDeviceCmd is a string in the form of "/MachineName MACHINE /DeviceID DEVICEPATH"
|
||||
* (/MachineName is optional). This function only parses this string and eventually
|
||||
* calls DeviceProperties().
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
WINAPI
|
||||
DeviceProperties_RunDLLW(HWND hWndParent,
|
||||
HINSTANCE hInst,
|
||||
LPCWSTR lpDeviceCmd,
|
||||
int nCmdShow)
|
||||
{
|
||||
WCHAR szDeviceID[MAX_DEVICE_ID_LEN + 1];
|
||||
WCHAR szMachineName[MAX_COMPUTERNAME_LENGTH + 1];
|
||||
LPWSTR lpString = (LPWSTR)lpDeviceCmd;
|
||||
|
||||
if (!GetDeviceAndComputerName(lpString,
|
||||
szDeviceID,
|
||||
szMachineName))
|
||||
{
|
||||
ERR("DeviceProperties_RunDLLW DeviceID: %S, MachineName: %S\n", szDeviceID, szMachineName);
|
||||
return;
|
||||
}
|
||||
|
||||
DevicePropertiesW(hWndParent,
|
||||
szMachineName,
|
||||
szDeviceID,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
* NAME EXPORTED
|
||||
* DeviceManager_ExecuteA
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Starts the Device Manager
|
||||
*
|
||||
* ARGUMENTS
|
||||
* hWndParent: Handle to the parent window
|
||||
* hInst: Handle to the application instance
|
||||
* lpMachineName: Machine Name, NULL is the local machine
|
||||
* nCmdShow: Specifies how the window should be shown
|
||||
*
|
||||
* RETURN VALUE
|
||||
* TRUE: if no errors occured
|
||||
* FALSE: if the device manager could not be executed
|
||||
*
|
||||
* REVISIONS
|
||||
*
|
||||
* NOTE
|
||||
* - Win runs the device manager in a separate process, so hWndParent is somehow
|
||||
* obsolete.
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
DeviceManager_ExecuteA(HWND hWndParent,
|
||||
HINSTANCE hInst,
|
||||
LPCSTR lpMachineName,
|
||||
int nCmdShow)
|
||||
{
|
||||
LPWSTR lpMachineNameW = NULL;
|
||||
BOOL Ret;
|
||||
|
||||
if (lpMachineName != NULL)
|
||||
{
|
||||
if (!(lpMachineNameW = ConvertMultiByteToUnicode(lpMachineName,
|
||||
CP_ACP)))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
Ret = DeviceManager_ExecuteW(hWndParent,
|
||||
hInst,
|
||||
lpMachineNameW,
|
||||
nCmdShow);
|
||||
|
||||
if (lpMachineNameW != NULL)
|
||||
{
|
||||
HeapFree(GetProcessHeap(),
|
||||
0,
|
||||
lpMachineNameW);
|
||||
}
|
||||
|
||||
|
||||
return Ret;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
* NAME EXPORTED
|
||||
* DeviceManager_ExecuteW
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Starts the Device Manager
|
||||
*
|
||||
* ARGUMENTS
|
||||
* hWndParent: Handle to the parent window
|
||||
* hInst: Handle to the application instance
|
||||
* lpMachineName: Machine Name, NULL is the local machine
|
||||
* nCmdShow: Specifies how the window should be shown
|
||||
*
|
||||
* RETURN VALUE
|
||||
* TRUE: if no errors occured
|
||||
* FALSE: if the device manager could not be executed
|
||||
*
|
||||
* REVISIONS
|
||||
*
|
||||
* NOTE
|
||||
* - Win runs the device manager in a separate process, so hWndParent is somehow
|
||||
* obsolete.
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
DeviceManager_ExecuteW(HWND hWndParent,
|
||||
HINSTANCE hInst,
|
||||
LPCWSTR lpMachineName,
|
||||
int nCmdShow)
|
||||
{
|
||||
// FIXME: Call mmc with devmgmt.msc
|
||||
|
||||
CDeviceManager DevMgr;
|
||||
return DevMgr.Create(hWndParent, hInst, lpMachineName, nCmdShow);
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
* NAME EXPORTED
|
||||
* DeviceProblemWizard_RunDLLA
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Calls the device problem wizard
|
||||
*
|
||||
* ARGUMENTS
|
||||
* hWndParent: Handle to the parent window
|
||||
* hInst: Handle to the application instance
|
||||
* lpDeviceCmd: A command that includes the DeviceID of the properties to be shown,
|
||||
* also see NOTEs
|
||||
* nCmdShow: Specifies how the window should be shown
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
* REVISIONS
|
||||
*
|
||||
* NOTE
|
||||
* - Win XP exports this function as DeviceProblenWizard_RunDLLA, apparently it's
|
||||
* a typo so we additionally export an alias function
|
||||
* - lpDeviceCmd is a string in the form of "/MachineName MACHINE /DeviceID DEVICEPATH"
|
||||
* (/MachineName is optional). This function only parses this string and eventually
|
||||
* calls DeviceProperties().
|
||||
*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
WINAPI
|
||||
DeviceProblemWizard_RunDLLA(HWND hWndParent,
|
||||
HINSTANCE hInst,
|
||||
LPCSTR lpDeviceCmd,
|
||||
int nCmdShow)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
* NAME EXPORTED
|
||||
* DeviceProblemWizard_RunDLLW
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Calls the device problem wizard
|
||||
*
|
||||
* ARGUMENTS
|
||||
* hWndParent: Handle to the parent window
|
||||
* hInst: Handle to the application instance
|
||||
* lpDeviceCmd: A command that includes the DeviceID of the properties to be shown,
|
||||
* also see NOTEs
|
||||
* nCmdShow: Specifies how the window should be shown
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
* REVISIONS
|
||||
*
|
||||
* NOTE
|
||||
* - Win XP exports this function as DeviceProblenWizard_RunDLLA, apparently it's
|
||||
* a typo so we additionally export an alias function
|
||||
* - lpDeviceCmd is a string in the form of "/MachineName MACHINE /DeviceID DEVICEPATH"
|
||||
* (/MachineName is optional). This function only parses this string and eventually
|
||||
* calls DeviceProperties().
|
||||
*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
WINAPI
|
||||
DeviceProblemWizard_RunDLLW(HWND hWndParent,
|
||||
HINSTANCE hInst,
|
||||
LPCWSTR lpDeviceCmd,
|
||||
int nCmdShow)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
* NAME EXPORTED
|
||||
* DeviceManagerPrintA
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Calls the device problem wizard
|
||||
*
|
||||
* ARGUMENTS
|
||||
* lpMachineName: Machine Name, NULL is the local machine
|
||||
* lpPrinter: Filename of the printer where it should be printed on
|
||||
* nPrintMode: Specifies what kind of information is to be printed
|
||||
* DEV_PRINT_ABSTRACT: Prints an abstract of system information, the parameters
|
||||
* uNumberOfGuids, Guids are ignored
|
||||
* DEV_PRINT_SELECTED: Prints information about the devices listed in Guids
|
||||
* DEV_PRINT_ALL: Prints an abstract of system information and all
|
||||
* system devices
|
||||
* uNumberOfGuids: Numbers of guids in the Guids array, this parameter is ignored unless
|
||||
* nPrintMode is DEV_PRINT_SELECTED
|
||||
* lpGuids: Array of device guids, this parameter is ignored unless
|
||||
* nPrintMode is DEV_PRINT_SELECTED
|
||||
*
|
||||
* RETURN VALUE
|
||||
* TRUE: if no errors occured
|
||||
* FALSE: if errors occured
|
||||
*
|
||||
* REVISIONS
|
||||
*
|
||||
* NOTE
|
||||
*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
DeviceManagerPrintA(LPCSTR lpMachineName,
|
||||
LPCSTR lpPrinter,
|
||||
int nPrintMode,
|
||||
UINT uNumberOfGuids,
|
||||
LPGUID lpGuids)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
* NAME EXPORTED
|
||||
* DeviceManagerPrintW
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Calls the device problem wizard
|
||||
*
|
||||
* ARGUMENTS
|
||||
* lpMachineName: Machine Name, NULL is the local machine
|
||||
* lpPrinter: Filename of the printer where it should be printed on
|
||||
* nPrintMode: Specifies what kind of information is to be printed
|
||||
* DEV_PRINT_ABSTRACT: Prints an abstract of system information, the parameters
|
||||
* uNumberOfGuids, Guids are ignored
|
||||
* DEV_PRINT_SELECTED: Prints information about the devices listed in Guids
|
||||
* DEV_PRINT_ALL: Prints an abstract of system information and all
|
||||
* system devices
|
||||
* uNumberOfGuids: Numbers of guids in the Guids array, this parameter is ignored unless
|
||||
* nPrintMode is DEV_PRINT_SELECTED
|
||||
* lpGuids: Array of device guids, this parameter is ignored unless
|
||||
* nPrintMode is DEV_PRINT_SELECTED
|
||||
*
|
||||
* RETURN VALUE
|
||||
* TRUE: if no errors occured
|
||||
* FALSE: if errors occured
|
||||
*
|
||||
* REVISIONS
|
||||
*
|
||||
* NOTE
|
||||
*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
DeviceManagerPrintW(LPCWSTR lpMachineName,
|
||||
LPCWSTR lpPrinter,
|
||||
int nPrintMode,
|
||||
UINT uNumberOfGuids,
|
||||
LPGUID lpGuids)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
class CDevMgrUIModule : public CComModule
|
||||
{
|
||||
public:
|
||||
};
|
||||
|
||||
CDevMgrUIModule gModule;
|
||||
|
||||
STDAPI DllCanUnloadNow()
|
||||
{
|
||||
return gModule.DllCanUnloadNow();
|
||||
}
|
||||
|
||||
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
|
||||
{
|
||||
return gModule.DllGetClassObject(rclsid, riid, ppv);
|
||||
}
|
||||
|
||||
STDAPI DllRegisterServer()
|
||||
{
|
||||
return gModule.DllRegisterServer(FALSE);
|
||||
}
|
||||
|
||||
STDAPI DllUnregisterServer()
|
||||
{
|
||||
return gModule.DllUnregisterServer(FALSE);
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
|
||||
BOOL
|
||||
WINAPI
|
||||
DllMain(_In_ HINSTANCE hinstDLL,
|
||||
_In_ DWORD dwReason,
|
||||
_In_ LPVOID lpvReserved)
|
||||
{
|
||||
switch (dwReason)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
DisableThreadLibraryCalls(hinstDLL);
|
||||
hDllInstance = hinstDLL;
|
||||
break;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue