다음을 통해 공유


ScsiPortWmiSetInstanceName 함수(scsiwmi.h)

ScsiPortWmiSetInstanceName 루틴은 요청 컨텍스트 내에서 WNODE_ALL_DATA 구조를 업데이트하여 instance 이름의 위치와 길이를 지정합니다.

참고 SCSI 포트 드라이버 및 SCSI 미니포트 드라이버 모델은 나중에 변경되거나 사용할 수 없습니다. 대신 Storport 드라이버Storport 미니포트 드라이버 모델을 사용하는 것이 좋습니다.
 

구문

PWCHAR ScsiPortWmiSetInstanceName(
  [in]      PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in]      ULONG                    InstanceIndex,
  [in]      ULONG                    InstanceNameLength,
  [out]     PULONG                   BufferAvail,
  [in, out] PULONG                   SizeNeeded
);

매개 변수

[in] RequestContext

WMI SRB에 대한 요청 컨텍스트를 포함하는 형식 SCSIWMI_REQUEST_CONTEXT 구조체에 대한 포인터입니다.

[in] InstanceIndex

instance 이름의 위치와 길이를 지정할 instance 나타내는 인덱스를 포함합니다.

[in] InstanceNameLength

instance 이름의 크기(바이트)를 지정합니다.

[out] BufferAvail

입력에서 instance 이름과 데이터를 설명하는 데 사용할 수 있는 WNODE_ALL_DATA 구조의 버퍼 공간 바이트 수를 포함해야 합니다. 반환할 때 이 멤버에는 남아 있는 버퍼 공간의 바이트 수가 포함됩니다.

BufferAvail 매개 변수에서 사용 가능한 버퍼 크기에 대한 값을 반환하는 세 가지 SCSI 포트 WMI 루틴이 있습니다.

ScsiPortWmiSetInstanceCount

ScsiPortWmiSetData

ScsiPortWmiSetInstanceName

미니포트 드라이버는 먼저 ScsiPortWmiSetInstanceCount 를 호출해야 하지만 ScsiPortWmiSetInstanceCount 가 호출된 후에는 미니 드라이버가 ScsiPortWmiSetDataScsiPortWmiSetInstanceName을 호출하는 순서는 중요하지 않습니다. ScsiPortWmiSetData 또는 ScsiPortWmiSetInstanceName을 호출하는 경우 BufferAvail 매개 변수의 루틴에 전달된 값은 가장 최근에 호출된 SCSI 포트 WMI 루틴에 의해 BufferAvail 매개 변수에 반환된 값과 동일해야 합니다. instance 경우 미니드라이버가 ScsiPortWmiSetInstanceCount를 먼저 호출하고 이 루틴이 BufferAvail 매개 변수에서 1,000의 값을 반환한다고 가정합니다. 다음으로, minidriver는 BufferAvail 매개 변수에서 500 값을 반환하는 ScsiPortWmiSetData를 호출합니다. 마지막으로 Minidriver는 BufferAvail 매개 변수에서 200 값을 반환하는 ScsiPortWmiSetInstanceName을 호출합니다. 초기 값 1,000을 BufferAvailScsiPortWmiSetData에 전달해야 하며 값 500을 ScsiPortWmiSetInstanceName에 전달해야 합니다.

instance 이름인 InstanceNameLength를 추가하는 데 사용할 수 있는 메모리가 충분하지 않으면 BufferAvail 멤버에 0이 반환됩니다.

[in, out] SizeNeeded

입력에서 InstanceIndex에서 지정한 instance 대한 설명 데이터를 추가하기 전에 WNODE를 설명하는 데 필요한 바이트 수를 나타냅니다. 반환할 때 이 멤버는 새 instance 대한 데이터를 포함하여 전체 WNODE의 크기를 포함합니다.

반환 값

ScsiPortWmiSetInstanceCount 루틴은 호출자가 InstanceIndex에 지정된 instance 이름을 저장할 수 있는 버퍼에 대한 포인터를 반환합니다. ScsiPortWmiSetInstanceCount가 instance 이름에 충분한 메모리를 할당할 수 없거나 요청 컨텍스트에 포함된 WNODE가 WNODE_ALL_DATA 형식이 아닌 경우 ScsiPortWmiSetDataNULL을 반환합니다.

설명

Minidriver는 ScsiPortWmiSetInstanceName 을 호출하기 전에 ScsiPortWmiSetInstanceCount를 호출해야 합니다.

RequestContext 매개 변수는 WMI(Windows Management Instrumentation) SCSI SRB(요청 블록)와 연결된 정보를 포함하는 요청 컨텍스트 구조인 SCSIWMI_REQUEST_CONTEXT 가리킵니다. 요청 컨텍스트 구조는 WMI 시스템에서 사용자 모드 데이터 소비자와 드라이버와 같은 커널 모드 데이터 공급자 간에 데이터를 전달하는 데 사용하는 WMI WNODE_XXX 구조체 중 하나를 포함합니다.

ScsiPortWmiSetInstanceName 루틴에는 요청 컨텍스트 내에 정의된 WNODE 구조체가 WNODE_ALL_DATA 형식이어야 합니다. ScsiPortWmiSetInstanceName은 WMI 데이터 블록과 연결된 인스턴스에 대한 instance 이름 영역을 따로 설정할 수 있기 때문입니다. 단일 instance 대한 정보를 포함하는 WNODE_SINGLE_INSTANCE 구조와 달리 WNODE_ALL_DATA 구조에는 서로 다른 인스턴스의 버퍼 영역에 대한 포인터 배열이 포함되어 있으며 ScsiPortWmiSetInstanceCount는 이 배열을 초기화하여 instance 데이터의 각 버퍼에 개별적으로 액세스할 수 있도록 합니다.

요청 컨텍스트에 할당된 메모리는 미니포트 드라이버가 ScsiPortWmiPostProcess를 호출하고 ScsiPortWmiPostProcess가 최종 SRB 상태 및 버퍼 크기를 반환할 때까지 유효한 상태를 유지해야 합니다. SRB가 보류될 수 있는 경우 요청 컨텍스트에 대한 메모리를 SRB 확장에서 할당해야 합니다. SRB가 보류할 수 없는 경우 scope 나가지 않는 스택 프레임에서 메모리를 할당할 수 있습니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 scsiwmi.h(Miniport.h, Scsi.h 포함)

추가 정보

SCSIWMI_REQUEST_CONTEXT

WNODE_ALL_DATA

WNODE_SINGLE_INSTANCE