apcupsd 3.14.10 is an excellent control software
used in conjunction with the uninterruptible power supplies
from American Power Conversion (APC), now available from
The binary distribution of
apcupsd is supposed to run on Windows NT4, albeit without USB capability.
apcupsd can only be installed on NT4.
apcupsd fails to appear as a service.
Attempts to run it manually causes it to terminate immediately with
unable to find SetupDiEnumDeviceInterface in setupapi.dll.
SetupDiEnumDeviceInterface first appeared only in Windows 2000. Understandably,
apcupsd cannot run in NT4 out of the box.
SetupDiEnumDeviceInterface is associated with USB
Since we do not have USB support on Windows NT4 in the first place,
the solution is to comment out the call to
SetupDiEnumDeviceInterface, and recompile.
Comment out lines 163 and 164 in
src/win32/libusb-winusb-bridge.c, which is as follows, in red:
// Get the set of device interfaces that have been matched by our INF
HDEVINFO deviceInfo = SetupDiGetClassDevs(
&APCUPSD_DEVICE_GUID, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
// Iterate over all interfaces
int ndevs = 0;
int devidx = 0;
while (ndevs < MAX_USB_DEVICES)
// Get interface data for next interface and attempt to init it
interfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
deviceInfo, NULL, &APCUPSD_DEVICE_GUID, devidx++, &interfaceData))
// Determine required size for interface detail data
Make the installable target
apctray.exe program will not run on Windows NT4.
It fails with
The procedure entry point GetWindowInfo could not be located in the dynamic link library USER32.dll.
This is due to the API introduced for the first time only in Windows 2000.
However, Last updated on 28 Mar 2013
apctray.exe is not critical to