Funzione SCSIPortWmiSetInstanceCount (SCSIwmi.h)
SCSIPortWmiSetInstanceCount specifica il numero di istanze per cui i buffer di dati devono essere messi a 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 contenente il contesto della richiesta per una SRB WMI.
[in] InstanceCount
Contiene il numero di istanze per cui il minidriver fornirà dati.
[out] BufferAvail
Contiene, in caso di restituzione, il numero di byte di spazio buffer disponibile per descrivere i nomi e i dati dell'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 nel WNODE per inizializzare una matrice di dimensioni InstanceCount, verrà restituito uno zero in questo membro.
[out] SizeNeeded
Indica, in input, il numero di byte necessari per descrivere l'intero WNODE prima di configurare le matrici interne nel 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 solo SCSIPortWmiSetInstanceCount una sola volta.
Il parametro RequestContext punta a una struttura di contesto di richiesta, SCSIWMI_REQUEST_CONTEXT, che contiene informazioni associate a un blocco di richiesta SCSI (WMI) di Strumentazione gestione Windows ( SRB). La struttura del contesto della richiesta, a sua volta, contiene una delle strutture WMI WNODE_XXX usate dal sistema WMI per passare i 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. Ciò avviene perché SCSIPortWmiSetInstanceCount imposta 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 per 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 di richiesta deve rimanere valida fino a quando il driver miniport chiama SCSIPortWmiPostProcess e SCSIPortWmiPostProcess restituisce lo stato E IL buffer finale. Se SRB può eseguire la penna, la memoria per il contesto della richiesta deve essere allocata dall'estensione SRB. Se SRB non è in grado di eseguire la penna, la memoria può essere allocata da un frame dello stack che non esce dall'ambito.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | SCSIwmi.h (includere Miniport.h, SCSI.h) |