Поделиться через


Функция ScsiPortWmiSetInstanceCount (scsiwmi.h)

ScsiPortWmiSetInstanceCount указывает количество экземпляров, для которых буферы данных должны быть выделены в структуре WNODE_ALL_DATA в контексте запроса.

Примечание Модели драйверов портов SCSI и драйверов мини-портов SCSI могут быть изменены или недоступны в будущем. Вместо этого рекомендуется использовать модели драйверов Storport и драйверов для мини-портов Storport .
 

Синтаксис

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

Параметры

[in] RequestContext

Указатель на структуру типа SCSIWMI_REQUEST_CONTEXT , содержащую контекст запроса для WMI SRB.

[in] InstanceCount

Содержит количество экземпляров, для которых мини-диск предоставит данные.

[out] BufferAvail

Содержит при возврате количество байтов буферного пространства, доступного для описания имен экземпляров и данных. Значение, возвращаемое в этом элементе, можно передать подпрограммам ScsiPortWmiSetData и ScsiPortWmiSetInstanceName в параметре BufferAvail этих подпрограмм.

Подпрограмма ScsiPortWmiSetInstanceCount инициализирует массив указателей на буферы данных с одним элементом массива для каждого экземпляра. Если в WNODE недостаточно памяти для инициализации массива InstanceCount размера, в этом элементе будет возвращен ноль.

[out] SizeNeeded

Указывает на входные данные количество байтов, необходимых для описания всего WNODE перед настройкой внутренних массивов в WNODE. При возврате этот элемент будет содержать размер всего WNODE, включая новые инициализированные массивы в WNODE.

Возвращаемое значение

Подпрограмма ScsiPortWmiSetInstanceCount возвращает значение TRUE , если операция выполнена успешно, и FALSE, если WNODE, содержащийся в контексте запроса, не относится к типу WNODE_ALL_DATA.

Комментарии

Мини-накопитель должен вызвать ScsiPortWmiSetInstanceCount перед вызовом ScsiPortWmiSetData или ScsiPortWmiSetInstanceName. Мини-driver должен вызывать ScsiPortWmiSetInstanceCount только один раз.

Параметр RequestContext указывает на структуру контекста запроса SCSIWMI_REQUEST_CONTEXT, которая содержит сведения, связанные с блоком запросов SCSI инструментария управления Windows (WMI) (SRB). Структура контекста запроса, в свою очередь, содержит одну из структур WMI WNODE_XXX, используемых системой WMI для передачи данных между потребителями данных пользовательского режима и поставщиками данных в режиме ядра, такими как драйверы.

Подпрограмма ScsiPortWmiSetInstanceCount требует, чтобы структура WNODE, определенная в контексте запроса, была типа WNODE_ALL_DATA. Это связано с тем, что ScsiPortWmiSetInstanceCount выделяет область данных, которая будет хранить сведения для нескольких экземпляров, связанных с блоком данных WMI. В отличие от структуры WNODE_SINGLE_INSTANCE , содержащей сведения об одном экземпляре, структура WNODE_ALL_DATA содержит массив указателей на буферные области для разных экземпляров, а ScsiPortWmiSetInstanceCount инициализирует этот массив, чтобы каждый буфер данных экземпляра можно было получить по отдельности с помощью индекса экземпляра.

Память, выделенная для контекста запроса, должна оставаться действительной до тех пор, пока драйвер мини-порта не вызовет ScsiPortWmiPostProcess, а ScsiPortWmiPostProcess не вернет окончательное состояние SRB и размер буфера. Если SRB может выполняться, память для контекста запроса должна быть выделена из расширения SRB. Если SRB не удается выполнить, память может быть выделена из кадра стека, который не выходит из область.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть scsiwmi.h (включая Miniport.h, Scsi.h)

См. также раздел

SCSIWMI_REQUEST_CONTEXT

WNODE_ALL_DATA

WNODE_SINGLE_INSTANCE