ScsiPortWmiSetInstanceName 함수(scsiwmi.h)
ScsiPortWmiSetInstanceName 루틴은 요청 컨텍스트 내의 WNODE_ALL_DATA 구조를 업데이트하여 인스턴스 이름의 위치와 길이를 지정합니다.
통사론
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
인스턴스 이름의 위치와 길이를 지정할 인스턴스를 나타내는 인덱스를 포함합니다.
[in] InstanceNameLength
인스턴스 이름의 크기(바이트)를 지정합니다.
[out] BufferAvail
입력에 인스턴스 이름 및 데이터를 설명하는 데 사용할 수 있는 WNODE_ALL_DATA 구조체의 버퍼 공간 바이트 수를 포함해야 합니다. 반환할 때 이 멤버는 남아 있는 버퍼 공간의 바이트 수를 포함합니다.
BufferAvail 매개 변수에서 사용 가능한 버퍼 크기에 대한 값을 반환하는 세 가지 SCSI 포트 WMI 루틴이 있습니다.
ScsiPortWmiSetInstanceName
미니포트 드라이버는 먼저 ScsiPortWmiSetInstanceCount 호출해야 하지만 ScsiPortWmiSetInstanceCount 호출된 후에는 미니 드라이버가 ScsiPortWmiSetData 호출하고 ScsiPortWmiSetInstanceName호출하는 순서는 중요하지 않습니다. ScsiPortWmiSetData 또는 ScsiPortWmiSetInstanceName호출하는 경우 BufferAvail 매개 변수의 루틴에 전달된 값은 가장 최근에 호출된 SCSI 포트 WMI 루틴에서 BufferAvail 매개 변수에 반환된 값과 동일해야 합니다. 예를 들어 미니 드라이버가 scsiPortWmiSetInstanceCount 호출하고 이 루틴은 BufferAvail 매개 변수에서 1,000의 값을 반환한다고 가정합니다. 다음으로, 미니 드라이버는 BufferAvail 매개 변수에서 500 값을 반환하는 ScsiPortWmiSetData 호출합니다. 마지막으로 미니 드라이버는 BufferAvail 매개 변수에서 200 값을 반환하는 ScsiPortWmiSetInstanceName 호출합니다. 초기 값 1,000은 BufferAvailScsiPortWmiSetData 전달되어야 하며, 값 500은 ScsiPortWmiSetInstanceName전달되어야 합니다.
InstanceNameLength 길이인스턴스 이름을 추가할 수 있는 메모리가 충분하지 않으면 BufferAvail 멤버에 0이 반환됩니다.
[in, out] SizeNeeded
입력에서 InstanceIndex지정된 인스턴스에 대한 설명 데이터를 추가하기 전에 WNODE 설명하는 데 필요한 바이트 수를 나타냅니다. 반환될 때 이 멤버는 새 인스턴스에 대한 데이터를 포함하여 전체 WNODE의 크기를 포함합니다.
반환 값
ScsiPortWmiSetInstanceCount 루틴은 호출자가 InstanceIndex지정된 인스턴스의 이름을 저장할 수 있는 버퍼에 대한 포인터를 반환합니다. ScsiPortWmiSetInstanceCount 인스턴스 이름에 충분한 메모리를 할당할 수 없거나 요청 컨텍스트 내에 포함된 WNODE가 WNODE_ALL_DATA형식이 아니면 ScsiPortWmiSetData NULL 반환합니다.
발언
ScsiPortWmiSetInstanceName호출하기 전에 미니 드라이버는 ScsiPortWmiSetInstanceCount 호출해야 합니다.
RequestContext 매개 변수는 WMI(Windows Management Instrumentation) SRB(SCSI 요청 블록)와 연결된 정보를 포함하는 요청 컨텍스트 구조(SCSIWMI_REQUEST_CONTEXT)를 가리킵니다. 요청 컨텍스트 구조는 WMI 시스템에서 사용자 모드 데이터 소비자와 커널 모드 데이터 공급자(예: 드라이버) 간에 데이터를 전달하는 데 사용하는 WMI WNODE_XXX 구조 중 하나를 포함합니다.
ScsiPortWmiSetInstanceName 루틴에는 요청 컨텍스트 내에 정의된 WNODE 구조체가 WNODE_ALL_DATA형식이어야 합니다. 이는 ScsiPortWmiSetInstanceName WMI 데이터 블록과 연결된 인스턴스의 인스턴스 이름 영역을 따로 설정할 수 있기 때문입니다. 단일 인스턴스에 대한 정보를 포함하는 WNODE_SINGLE_INSTANCE 구조와 달리 WNODE_ALL_DATA 구조에는 여러 인스턴스의 버퍼 영역에 대한 포인터 배열이 포함되어 있으며, ScsiPortWmiSetInstanceCount 인스턴스 데이터의 각 버퍼에 개별적으로 액세스할 수 있도록 이 배열을 초기화합니다.
요청 컨텍스트에 할당된 메모리는 미니포트 드라이버가 ScsiPortWmiPostProcess호출하고 ScsiPortWmiPostProcess 최종 SRB 상태 및 버퍼 크기를 반환할 때까지 유효해야 합니다. SRB가 보류될 수 있는 경우 요청 컨텍스트에 대한 메모리는 SRB 확장에서 할당되어야 합니다. SRB가 보류할 수 없는 경우 범위를 벗어나지 않는 스택 프레임에서 메모리를 할당할 수 있습니다.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 바탕 화면 |
헤더 | scsiwmi.h(Miniport.h, Scsi.h 포함) |