< prev index next >
src/java.desktop/windows/native/libawt/windows/WPrinterJob.cpp
Print this page
@@ -42,11 +42,10 @@
/* constants for DeviceCapability buffer lengths */
#define PAPERNAME_LENGTH 64
#define TRAYNAME_LENGTH 24
-
static BOOL IsSupportedLevel(HANDLE hPrinter, DWORD dwLevel) {
BOOL isSupported = FALSE;
DWORD cbBuf = 0;
LPBYTE pPrinter = NULL;
@@ -115,11 +114,10 @@
}
CATCH_BAD_ALLOC_RET(NULL);
}
-
JNIEXPORT jobjectArray JNICALL
Java_sun_print_PrintServiceLookupProvider_getAllPrinterNames(JNIEnv *env,
jobject peer)
{
TRY;
@@ -172,69 +170,22 @@
return nameArray;
CATCH_BAD_ALLOC_RET(NULL);
}
-
JNIEXPORT jlong JNICALL
-Java_sun_print_PrintServiceLookupProvider_notifyFirstPrinterChange(JNIEnv *env,
- jobject peer,
- jstring printer) {
- HANDLE hPrinter;
-
- LPTSTR printerName = NULL;
- if (printer != NULL) {
- printerName = (LPTSTR)JNU_GetStringPlatformChars(env,
- printer,
- NULL);
- JNU_ReleaseStringPlatformChars(env, printer, printerName);
- }
-
- // printerName - "Win NT/2K/XP: If NULL, it indicates the local printer
- // server" - MSDN. Win9x : OpenPrinter returns 0.
- BOOL ret = OpenPrinter(printerName, &hPrinter, NULL);
- if (!ret) {
- return (jlong)-1;
- }
-
- // PRINTER_CHANGE_PRINTER = PRINTER_CHANGE_ADD_PRINTER |
- // PRINTER_CHANGE_SET_PRINTER |
- // PRINTER_CHANGE_DELETE_PRINTER |
- // PRINTER_CHANGE_FAILED_CONNECTION_PRINTER
- HANDLE chgObj = FindFirstPrinterChangeNotification(hPrinter,
- PRINTER_CHANGE_PRINTER,
- 0,
- NULL);
- return (chgObj == INVALID_HANDLE_VALUE) ? (jlong)-1 : (jlong)chgObj;
-}
-
-
-
-JNIEXPORT void JNICALL
-Java_sun_print_PrintServiceLookupProvider_notifyClosePrinterChange(JNIEnv *env,
- jobject peer,
- jlong chgObject) {
- FindClosePrinterChangeNotification((HANDLE)chgObject);
-}
-
+Java_sun_print_PrintServiceLookupProvider_GetRemotePrintersCount(JNIEnv *env,
+ jobject peer) {
+ DWORD cbNeeded = 0;
+ DWORD cReturned = 0;
-JNIEXPORT jint JNICALL
-Java_sun_print_PrintServiceLookupProvider_notifyPrinterChange(JNIEnv *env,
- jobject peer,
- jlong chgObject) {
- DWORD dwChange;
+ ::EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS,
+ NULL, 4, NULL, 0, &cbNeeded, &cReturned);
- DWORD ret = WaitForSingleObject((HANDLE)chgObject, INFINITE);
- if (ret == WAIT_OBJECT_0) {
- return(FindNextPrinterChangeNotification((HANDLE)chgObject,
- &dwChange, NULL, NULL));
- } else {
- return 0;
- }
+ return (cbNeeded/sizeof(PRINTER_INFO_4));
}
-
JNIEXPORT jfloatArray JNICALL
Java_sun_print_Win32PrintService_getMediaPrintableArea(JNIEnv *env,
jobject peer,
jstring printer,
jint papersize)
< prev index next >