FltGetVolumeName 함수(fltkernel.h)
FltGetVolumeName 루틴은 지정된 볼륨의 볼륨 이름을 가져옵니다.
구문
NTSTATUS FLTAPI FltGetVolumeName(
[in] PFLT_VOLUME Volume,
[in, out, optional] PUNICODE_STRING VolumeName,
[out, optional] PULONG BufferSizeNeeded
);
매개 변수
[in] Volume
볼륨에 대한 불투명 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.
[in, out, optional] VolumeName
STATUS_SUCCESS 반환되는 경우 볼륨의 비영구 디바이스 개체 이름(예: "\Device\HarddiskVolume1")이 포함된 호출자가 할당한 UNICODE_STRING 구조체에 대한 포인터입니다. VolumeName-Buffer>에 대한 풀도 호출자가 할당됩니다.
이 매개 변수는 선택 사항이며 NULL일 수 있습니다. 그러나 BufferSizeNeeded가 NULL인 경우 NULL이 아니어야 합니다. 이 매개 변수가 NULL 이고 BufferSizeNeeded 가 NULL이 아니면 FltGetVolumeName 은 요청된 볼륨 이름에 필요한 버퍼 크기를 BufferSizeNeeded 매개 변수에 저장하고 STATUS_BUFFER_TOO_SMALL 반환합니다. 설명 부분을 참조하세요.
[out, optional] BufferSizeNeeded
요청된 볼륨 이름의 크기(바이트)를 수신하는 호출자가 할당한 변수에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다. 그러나 VolumeName이 NULL이면 NULL이 아니어야 FltGetVolumeName이 요청된 볼륨 이름에 필요한 버퍼 크기를 저장할 수 있습니다.
반환 값
FltGetVolumeName 은 다음 NTSTATUS 값 중 하나를 반환합니다.
반환 코드 | 설명 |
---|---|
STATUS_SUCCESS | VolumeName에서 가리키는 UNICODE_STRING 구조체에는 구조체에 대한 Buffer 멤버의 볼륨 이름과 Length 멤버의 이름 길이(바이트)가 포함됩니다. |
STATUS_BUFFER_TOO_SMALL | VolumeName이 가리키는 UNICODE_STRING 구조체의 Buffer 멤버가 너무 작아서(MaximumLength 멤버로 표시됨) 전체 볼륨 이름을 포함할 수 없습니다. 오류 코드입니다. |
STATUS_INVALID_PARAMETER | VolumeName 및 BufferSizeNeeded는 모두 NULL입니다. 오류 코드입니다. |
설명
이 루틴이 성공하려면 전체 볼륨 이름 문자열을 포함하려면 VolumeName이 가리키는 UNICODE_STRING 구조체의 Buffer 멤버가 MaximumLength 멤버에 표시된 대로 충분히 커야 합니다.
다음 의사 코드는 BufferSizeNeeded 를 알 수 없는 경우 볼륨 이름을 성공적으로 획득할 수 있는 한 가지 방법을 보여 줍니다.
FltGetVolumeName을 호출하여 Buffer에 필요한 풀과 MaximumLength에 필요한 크기를 결정합니다. 예:
FltGetVolumeName(VolumePtr, NULL, &VolumeNameSize);
버퍼에 대한 풀 바이트를 할당
VolumeNameSize
하고 MaximumLength를 로VolumeNameSize
설정합니다.FltGetVolumeName을 다시 호출하여 볼륨 이름을 가져옵니다. 예:
FltGetVolumeName(VolumePtr, &VolumeNameStruct, NULL);
VolumeNameStruct.Buffer
에는 길이 바이트인 유니코드 볼륨 이름 문자열이 VolumeNameStruct.Length
포함되어 있습니다.
지정된 볼륨의 볼륨 GUID 이름을 얻으려면 FltGetVolumeGuidName을 호출합니다.
지정된 이름의 볼륨에 대한 불투명 볼륨 포인터를 얻으려면 FltGetVolumeFromName을 호출합니다.
볼륨 이름을 지정하는 방법에 대한 자세한 내용은 스토리지 클래스 드라이버에서 탑재 관리자 요청 지원을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
헤더 | fltkernel.h(FltKernel.h 포함) |
라이브러리 | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |