Partager via


Fonction InitializePrintMonitor2 (winsplp.h)

La fonction InitializePrintMonitor2 d’un moniteur d’impression initialise un moniteur d’impression à utiliser avec des serveurs d’impression en cluster.

Syntaxe

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

Paramètres

[in] pMonitorInit

Pointeur fourni par l’appelant vers une structure MONITORINIT .

[out] phMonitor

Emplacement fourni par l’appelant dans lequel la fonction retourne un handle de moniteur.

Valeur retournée

Si l’opération réussit, la fonction doit retourner un pointeur vers une structure MONITOR2 . Sinon, la fonction doit appeler SetLastError (décrit dans la documentation Microsoft Windows SDK) pour définir un code d’erreur et retourner NULL.

Remarques

La fonction InitializePrintMonitor2 doit être exportée par moniteurs de langue et par DLL de serveur de moniteur de port. La fonction est appelée immédiatement après le chargement de la DLL du moniteur et n’est pas appelée à nouveau tant que la DLL n’est pas rechargée. Ses objectifs sont de permettre au moniteur de s’initialiser lui-même et de fournir au spouleur des pointeurs vers les fonctions de supervision internes. Les pointeurs de fonction sont contenus dans une structure MONITOR2 .

La structure MONITOR2 est plus grande dans Windows XP que dans Windows 2000. Pour s’assurer qu’un moniteur développé avec le Kit de développement du pilote (DDK) Windows XP s’installera sur Windows XP et Windows 2000, le moniteur doit effectuer les opérations suivantes :

  • Effectuez une case activée d’exécution pour déterminer la version du système d’exploitation sur laquelle le moniteur s’exécute.
  • Si le moniteur s’exécute sur Windows 2000, il doit définir le membre cbSize de la structure MONITOR2 sur MONITOR2_SIZE_WIN2K (défini dans Winsplp.h), la taille appropriée pour la version Windows 2000 de cette structure.

La fonction suivante détermine si la version actuelle du système d’exploitation est 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);
}

Pour un moniteur qui se charge sur Windows 2000, le code suivant définit correctement le membre cbSize de la structure MONITOR2.

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

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête winsplp.h (inclure Winsplp.h)

Voir aussi

MONITORINIT