Funzione ScsiPortWmiSetInstanceCount (scsiwmi.h)
Il ScsiPortWmiSetInstanceCount specifica il numero di istanze per cui i buffer di dati devono essere messi da parte all'interno della struttura WNODE_ALL_DATA nel contesto della richiesta.
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 descrivere i nomi e i dati delle istanze. 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 nel WNODE non è disponibile memoria sufficiente 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 WNODE contenuto nel contesto della richiesta non è di tipo WNODE_ALL_DATA.
Osservazioni
Il minidriver deve chiamare ScsiPortWmiSetInstanceCount prima di chiamare ScsiPortWmiSetData o ScsiPortWmiSetInstanceName. Il minidriver deve chiamare solo ScsiPortWmiSetInstanceCount una sola volta.
Il parametro RequestContext punta a una struttura del contesto della 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 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 sia 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 ScsiPortWmiPostProcesse 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 SRB non può eseguire la penna, la memoria può essere allocata da un frame dello stack che non esce dall'ambito.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Desktop |
intestazione | scsiwmi.h (include Miniport.h, Scsi.h) |