Interfaccia del co-programma di installazione

Nota

Le funzionalità descritte in questa sezione non sono supportate e i pacchetti driver che li contengono non riceveranno più una firma Microsoft. Vedere Uso di un file INF universale.

L'interfaccia di un co-programma di installazione è costituita da una funzione del punto di ingresso esportato e da una struttura di dati associata.

Punto di ingresso del co-programma di installazione

Un co-programma di installazione deve esportare una funzione del punto di ingresso con il prototipo seguente:

typedef DWORD 
  (CALLBACK* COINSTALLER_PROC) (
    IN DI_FUNCTION  InstallFunction,
    IN HDEVINFO  DeviceInfoSet,
    IN PSP_DEVINFO_DATA  DeviceInfoData  OPTIONAL,
    IN OUT PCOINSTALLER_CONTEXT_DATA  Context
    );

InstallFunction
Specifica la richiesta di installazione del dispositivo in fase di elaborazione, in cui il co-programma di installazione ha la possibilità di partecipare. Queste richieste vengono specificate usando codici DIF, ad esempio DIF_INSTALLDEVICE. Per altre informazioni, vedere Codici di funzione di installazione del dispositivo.

DeviceInfoSet
Fornisce un handle a un set di informazioni sul dispositivo.

DeviceInfoData
Facoltativamente, identifica un dispositivo che rappresenta la destinazione della richiesta di installazione del dispositivo. Se questo parametro è diverso da NULL, identifica un elemento informazioni sul dispositivo nel set di informazioni sul dispositivo. DeviceInfoData è diverso da NULL quando SetupDiCallClassInstaller chiama un coinstallatore specifico del dispositivo. Un co-programma di installazione specifico della classe può essere chiamato con una richiesta DIF con nullDeviceInfoData, ad esempio DIF_DETECT o DIF_FIRSTTIMESETUP.

Contesto
Punta a una struttura COINSTALLER_CONTEXT_DATA .

Un co-programma di installazione del dispositivo restituisce uno dei valori seguenti:

NO_ERROR
Il co-programma di installazione ha eseguito le azioni appropriate per l'oggetto InstallFunction specificato o il co-programma di installazione ha determinato che non è necessario eseguire alcuna azione per la richiesta.

Il co-programma di installazione deve restituire anche NO_ERROR se riceve un codice DIF non riconosciuto. Si noti che i programmi di installazione della classe restituiscono ERROR_DI_DO_DEFAULT per i codici DIF non riconosciuti.

ERROR_DI_POSTPROCESSING_REQUIRED
Il co-programma di installazione ha eseguito tutte le azioni appropriate per l'oggetto InstallFunction specificato e richiede di essere chiamato nuovamente dopo che il programma di installazione classi ha elaborato la richiesta.

Errore Win32
Il co-programma di installazione ha rilevato un errore.

Un co-programma di installazione non imposta lo stato restituito di ERROR_DI_DO_DEFAULT. Questo stato può essere usato solo da un programma di installazione classi. Se un programma di installazione condivisa restituisce questo stato, SetupDiCallClassInstaller non elabora correttamente la richiesta DIF_Xxx . Un co-programma di installazione potrebbe propagare uno stato restituito di ERROR_DI_DO_DEFAULT nel passaggio di post-elaborazione, ma non imposta mai questo valore.

COINSTALLER_CONTEXT_DATA

COINSTALLER_CONTEXT_DATA è una struttura di contesto specifica del programma di installazione che descrive una richiesta di installazione. Il formato della struttura è:

typedef struct 
  _COINSTALLER_CONTEXT_DATA {
      BOOLEAN  PostProcessing;
      DWORD    InstallResult;
      PVOID    PrivateData;
  } COINSTALLER_CONTEXT_DATA, *PCOINSTALLER_CONTEXT_DATA;

Nell'elenco seguente vengono descritti i membri di questa struttura:

  • PostProcessing è TRUE quando viene chiamato un co-programma di installazione dopo il programma di installazione della classe appropriato, se presente, ha elaborato il codice DIF specificato da InstallFunction. PostProcessing è di sola lettura per il co-programma di installazione.

  • Se PostProcessing è FALSE, InstallResult non è rilevante. Se PostProcessing è TRUE, InstallResult è lo stato corrente della richiesta di installazione. Questo valore è NO_ERROR o uno stato di errore restituito dal componente precedente chiamato per questa richiesta di installazione. Un co-programma di installazione può propagare lo stato restituendo questo valore per la relativa funzione restituita oppure può restituire un altro stato. InstallResult è di sola lettura nel co-programma di installazione.

  • PrivateData punta a un buffer allocato dal co-programma di installazione. Se un programma di installazione condivisa imposta questo puntatore e richiede la post-elaborazione, SetupDiCallClassInstaller passa il puntatore al co-programma di installazione quando chiama il co-programma di installazione per la post-elaborazione.