Funzione ScsiPortWmiSetInstanceCount (scsiwmi.h)

ScsiPortWmiSetInstanceCount specifica il numero di istanze per cui è necessario riservare i buffer di dati all'interno della struttura WNODE_ALL_DATA nel contesto della richiesta.

Nota I modelli di driver di porta SCSI e miniport SCSI potrebbero essere modificati o non disponibili in futuro. È invece consigliabile usare il driver Storport e i modelli di driver miniport Storport .
 

Sintassi

BOOLEAN ScsiPortWmiSetInstanceCount(
  [in]  PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in]  ULONG                    InstanceCount,
  [out] PULONG                   BufferAvail,
  [out] PULONG                   SizeNeeded
);

Parametri

[in] RequestContext

Puntatore a una struttura di tipo SCSIWMI_REQUEST_CONTEXT che contiene il contesto della richiesta per un SRB WMI.

[in] InstanceCount

Contiene il numero di istanze per cui il minidriver fornirà i dati.

[out] BufferAvail

Contiene, in caso di restituzione, il numero di byte di spazio buffer disponibile per la descrizione dei nomi e dei dati di istanza. Il valore restituito in questo membro può essere passato alle routine ScsiPortWmiSetData e ScsiPortWmiSetInstanceName nel parametro BufferAvail di tali routine.

La routine ScsiPortWmiSetInstanceCount inizializza una matrice di puntatori ai buffer di dati, con un elemento matrice per ogni istanza. Se non è disponibile memoria sufficiente in WNODE per inizializzare una matrice di dimensioni InstanceCount, in questo membro verrà restituito uno zero.

[out] SizeNeeded

Indica, all'input, il numero di byte necessari per descrivere l'intero WNODE prima di configurare le matrici interne in WNODE. In caso di restituzione, questo membro conterrà le dimensioni dell'intero WNODE, incluse le matrici appena inizializzate all'interno di WNODE.

Valore restituito

La routine ScsiPortWmiSetInstanceCount restituisce TRUE se l'operazione ha esito positivo e FALSE se il WNODE contenuto nel contesto della richiesta non è di tipo WNODE_ALL_DATA.

Commenti

Il minidriver deve chiamare ScsiPortWmiSetInstanceCount prima di chiamare ScsiPortWmiSetData o ScsiPortWmiSetInstanceName. Il minidriver deve chiamare ScsiPortWmiSetInstanceCount una sola volta.

Il parametro RequestContext punta a una struttura del contesto di richiesta, SCSIWMI_REQUEST_CONTEXT, che contiene informazioni associate a un blocco di richieste SCSI (WMI) di Strumentazione gestione Windows (WMI). La struttura del contesto della richiesta, a sua volta, contiene una delle strutture WMI WNODE_XXX usate dal sistema WMI per passare dati tra consumer di dati in modalità utente e provider di dati in modalità kernel, ad esempio i driver.

La routine ScsiPortWmiSetInstanceCount richiede che la struttura WNODE definita all'interno del contesto della richiesta sia di tipo WNODE_ALL_DATA. Questo avviene perché ScsiPortWmiSetInstanceCount riserva un'area dati che conterrà informazioni per più istanze associate a un blocco di dati WMI. A differenza della struttura WNODE_SINGLE_INSTANCE che contiene informazioni su una singola istanza, la struttura WNODE_ALL_DATA contiene una matrice di puntatori alle aree di buffer per istanze diverse e ScsiPortWmiSetInstanceCount inizializza questa matrice, in modo che ogni buffer di dati dell'istanza possa essere accessibile singolarmente usando un indice di istanza.

La memoria allocata per il contesto della richiesta deve rimanere valida fino a quando il driver miniport chiama ScsiPortWmiPostProcess e ScsiPortWmiPostProcess restituisce lo stato ERB finale e le dimensioni del buffer. Se SRB può eseguire la penna, la memoria per il contesto della richiesta deve essere allocata dall'estensione SRB. Se non è possibile eseguire la penna di SRB, la memoria può essere allocata da un frame dello stack che non esce dall'ambito.

Requisiti

   
Piattaforma di destinazione Desktop
Intestazione scsiwmi.h (include Miniport.h, Scsi.h)

Vedi anche

SCSIWMI_REQUEST_CONTEXT

WNODE_ALL_DATA

WNODE_SINGLE_INSTANCE