Condividi tramite


Funzione InitializePrintMonitor2 (winsplp.h)

La funzione di InitializePrintMonitor 2 di un monitor di stampa inizializza un monitor di stampa da utilizzare con i server di stampa cluster.

Sintassi

LPMONITOR2 InitializePrintMonitor2(
  [in]  PMONITORINIT pMonitorInit,
  [out] PHANDLE      phMonitor
);

Parametri

[in] pMonitorInit

Puntatore fornito dal chiamante a una struttura MONITORINIT.

[out] phMonitor

Posizione fornita dal chiamante in cui la funzione restituisce un handle di monitoraggio.

Valore restituito

Se l'operazione ha esito positivo, la funzione deve restituire un puntatore a una struttura MONITOR2. In caso contrario, la funzione deve chiamare SetLastError (descritta nella documentazione di Microsoft Windows SDK) per impostare un codice di errore e restituire NULL.

Osservazioni

La funzione InitializePrintMonitor2 deve essere esportata dai monitoraggi del linguaggio e dalle DLL del server di monitoraggio delle porte. La funzione viene chiamata immediatamente dopo il caricamento della DLL di monitoraggio e non viene chiamata di nuovo finché la DLL non viene ricaricata. I suoi scopi sono consentire al monitor di inizializzare se stesso e di fornire allo spooler i puntatori alle funzioni di monitoraggio interno. I puntatori a funzione sono contenuti in una struttura MONITOR2.

La struttura MONITOR2 è più grande in Windows XP rispetto a windows 2000. Per garantire che un monitor sviluppato con Windows XP Driver Development Kit (DDK) venga installato in Windows XP e Windows 2000, il monitor deve eseguire le operazioni seguenti:

  • Eseguire un controllo in fase di esecuzione per determinare la versione del sistema operativo in cui è in esecuzione il monitoraggio.
  • Se il monitoraggio è in esecuzione in Windows 2000, deve impostare il membro cbSize della struttura MONITOR2 su MONITOR2_SIZE_WIN2K (definito in Winsplp.h), le dimensioni appropriate per la versione di Windows 2000 di questa struttura.

La funzione seguente determina se la versione corrente del sistema operativo è Windows 2000.

BOOL  Is_Win2000()
{
  OSVERSIONINFOEX osvi;
  DWORDLONG dwlConditionMask = 0;

  // Initialize the OSVERSIONINFOEX structure.

  ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
  osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
  osvi.dwMajorVersion = 5;
  osvi.dwMinorVersion = 0;

  // Initialize the condition mask.
  VER_SET_CONDITION( dwlConditionMask, VER_MAJORVERSION, VER_EQUAL );
  VER_SET_CONDITION( dwlConditionMask, VER_MINORVERSION, VER_EQUAL );

  // Perform the test.
  return VerifyVersionInfo(
      &osvi,
      VER_MAJORVERSION | VER_MINORVERSION,
      dwlConditionMask);
}

Per un monitor che viene caricato in Windows 2000, il codice seguente imposta in modo appropriato il membro cb Size della struttura MONITOR2.

if ( Is_Win2000( ) )
    Monitor2.cbSize = MONITOR2_SIZE_WIN2K;

Fabbisogno

Requisito Valore
piattaforma di destinazione Desktop
intestazione winsplp.h (includere Winsplp.h)

Vedere anche

MONITORINIT