ntprint: Implement PSetupCreateMonitorInfo.
This commit is contained in:
parent
1a3689fdc2
commit
f7bd46a49d
|
@ -3,7 +3,7 @@ TOPOBJDIR = ../..
|
||||||
SRCDIR = @srcdir@
|
SRCDIR = @srcdir@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
MODULE = ntprint.dll
|
MODULE = ntprint.dll
|
||||||
IMPORTS = kernel32
|
IMPORTS = winspool kernel32
|
||||||
|
|
||||||
C_SRCS = \
|
C_SRCS = \
|
||||||
ntprint.c
|
ntprint.c
|
||||||
|
|
|
@ -25,8 +25,11 @@
|
||||||
|
|
||||||
#include "windef.h"
|
#include "windef.h"
|
||||||
#include "winbase.h"
|
#include "winbase.h"
|
||||||
#include "winver.h"
|
#include "winerror.h"
|
||||||
|
#include "wingdi.h"
|
||||||
#include "winnls.h"
|
#include "winnls.h"
|
||||||
|
#include "winver.h"
|
||||||
|
#include "winspool.h"
|
||||||
|
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
|
@ -35,6 +38,11 @@ WINE_DEFAULT_DEBUG_CHANNEL(ntprint);
|
||||||
|
|
||||||
HINSTANCE NTPRINT_hInstance = NULL;
|
HINSTANCE NTPRINT_hInstance = NULL;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
LPMONITOR_INFO_2W mi2; /* Buffer for installed Monitors */
|
||||||
|
DWORD installed; /* Number of installed Monitors */
|
||||||
|
} monitorinfo_t;
|
||||||
|
|
||||||
/*****************************************************
|
/*****************************************************
|
||||||
* DllMain
|
* DllMain
|
||||||
*/
|
*/
|
||||||
|
@ -54,3 +62,61 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************
|
||||||
|
* PSetupCreateMonitorInfo [NTPRINT.@]
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
HANDLE WINAPI PSetupCreateMonitorInfo(LPVOID unknown1, LPVOID unknown2,LPVOID unknown3)
|
||||||
|
{
|
||||||
|
monitorinfo_t * mi=NULL;
|
||||||
|
DWORD needed;
|
||||||
|
DWORD res;
|
||||||
|
|
||||||
|
TRACE("(%p, %p, %p)\n", unknown1, unknown2, unknown3);
|
||||||
|
|
||||||
|
if ((unknown2 != NULL) || (unknown3 != NULL)) {
|
||||||
|
FIXME("got unknown parameter: (%p, %p, %p)\n", unknown1, unknown2, unknown3);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
mi = HeapAlloc(GetProcessHeap(), 0, sizeof(monitorinfo_t));
|
||||||
|
if (!mi) {
|
||||||
|
/* FIXME: SetLastError() needed? */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get the needed size for all Monitors */
|
||||||
|
res = EnumMonitorsW(NULL, 2, NULL, 0, &needed, &mi->installed);
|
||||||
|
if (!res && (GetLastError() == ERROR_INSUFFICIENT_BUFFER)) {
|
||||||
|
mi->mi2 = HeapAlloc(GetProcessHeap(), 0, needed);
|
||||||
|
res = EnumMonitorsW(NULL, 2, (LPBYTE) mi->mi2, needed, &needed, &mi->installed);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!res) {
|
||||||
|
HeapFree(GetProcessHeap(), 0, mi);
|
||||||
|
/* FIXME: SetLastError() needed? */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
TRACE("=> %p (%u monitors installed)\n", mi, mi->installed);
|
||||||
|
return (HANDLE) mi;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************
|
||||||
|
* PSetupDestroyMonitorInfo [NTPRINT.@]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
VOID WINAPI PSetupDestroyMonitorInfo(HANDLE monitorinfo)
|
||||||
|
{
|
||||||
|
monitorinfo_t * mi = (monitorinfo_t *) monitorinfo;
|
||||||
|
|
||||||
|
TRACE("(%p)\n", mi);
|
||||||
|
if (mi) {
|
||||||
|
if (mi->installed) HeapFree(GetProcessHeap(), 0, mi->mi2);
|
||||||
|
HeapFree(GetProcessHeap(), 0, mi);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
@ stub PSetupAssociateICMProfiles
|
@ stub PSetupAssociateICMProfiles
|
||||||
@ stub PSetupBuildDriversFromPath
|
@ stub PSetupBuildDriversFromPath
|
||||||
@ stub PSetupCreateDrvSetupPage
|
@ stub PSetupCreateDrvSetupPage
|
||||||
@ stub PSetupCreateMonitorInfo
|
@ stdcall PSetupCreateMonitorInfo(long ptr ptr)
|
||||||
@ stub PSetupCreatePrinterDeviceInfoList
|
@ stub PSetupCreatePrinterDeviceInfoList
|
||||||
@ stub PSetupDestroyDriverInfo3
|
@ stub PSetupDestroyDriverInfo3
|
||||||
@ stub PSetupDestroyMonitorInfo
|
@ stdcall PSetupDestroyMonitorInfo(long)
|
||||||
@ stub PSetupDestroyPrinterDeviceInfoList
|
@ stub PSetupDestroyPrinterDeviceInfoList
|
||||||
@ stub PSetupDestroySelectedDriverInfo
|
@ stub PSetupDestroySelectedDriverInfo
|
||||||
@ stub PSetupDriverInfoFromName
|
@ stub PSetupDriverInfoFromName
|
||||||
|
|
Loading…
Reference in New Issue