WdmlibIoCreateDeviceSecure 함수(wdmsec.h)
WdmlibIoCreateDeviceSecure 함수(또는 IoCreateDeviceSecure)는 명명된 디바이스 개체를 만들고 지정된 보안 설정을 적용합니다.
통사론
NTSTATUS WdmlibIoCreateDeviceSecure(
[in] PDRIVER_OBJECT DriverObject,
[in] ULONG DeviceExtensionSize,
[in, optional] PUNICODE_STRING DeviceName,
[in] DEVICE_TYPE DeviceType,
[in] ULONG DeviceCharacteristics,
[in] BOOLEAN Exclusive,
[in] PCUNICODE_STRING DefaultSDDLString,
[in, optional] LPCGUID DeviceClassGuid,
PDEVICE_OBJECT *DeviceObject
);
매개 변수
[in] DriverObject
호출자의 드라이버 개체에 대한 포인터입니다. 각 드라이버는 DriverEntry 루틴에 대한 매개 변수에서 해당 드라이버 개체에 대한 포인터를 받습니다. 또한 WDM 함수 및 필터 드라이버는 AddDevice 루틴에서 드라이버 개체 포인터를 받습니다.
[in] DeviceExtensionSize
디바이스 개체의 디바이스 확장 할당할 드라이버 결정 바이트 수를 지정합니다. 디바이스 확장의 내부 구조는 드라이버 정의입니다.
[in, optional] DeviceName
필요에 따라 디바이스 개체의 이름을 지정하는 null로 끝나는 유니코드 문자열이 포함된 버퍼를 가리킵니다. 문자열은 전체 경로 이름이어야 합니다. 이름을 지정하지 않으면 FILE_AUTOGENERATED_DEVICE_NAME 플래그가 DeviceCharacteristics 매개 변수에 있어야 합니다. 이름 없는 디바이스 개체를 만들려면 IoCreateDevice 루틴을 사용합니다.
[in] DeviceType
디바이스 유형(예: FILE_DEVICE_DISK, FILE_DEVICE_KEYBOARD 등) 또는 새 유형의 디바이스에 대한 공급업체 정의 값을 나타내는 시스템 정의 FILE_DEVICE_XXX 상수 중 하나를 지정합니다. 자세한 내용은 디바이스 유형 지정을 참조하세요. (버스 드라이버에 디바이스 유형에 대한 정보가 없을 수 있으므로 PDO 대한 디바이스 형식 값은 INF AddReg 지시문지정할 수 있습니다.)
[in] DeviceCharacteristics
드라이버의 디바이스에 대한 추가 정보를 제공하는 하나 이상의 시스템 정의 상수(함께 ORed)를 지정합니다. 가능한 디바이스 특성 목록은 DEVICE_OBJECT참조하세요. 디바이스 특성을 지정하는 방법에 대한 자세한 내용은 디바이스 특징 지정을 참조하세요. 대부분의 드라이버는 이 매개 변수에 대한 FILE_DEVICE_SECURE_OPEN 지정합니다.
[in] Exclusive
디바이스 개체가 전용 디바이스나타내는지 지정합니다. 대부분의 드라이버는 이 값을 false 설정합니다. 자세한 내용은 디바이스 개체에 대한 단독 액세스 지정을 참조하세요.
[in] DefaultSDDLString
디바이스 개체의 기본 보안 설정에 대한 문자열 표현을 지정합니다. 시스템 관리자가 DeviceClassGuid 매개 변수로 식별된 레지스트리 섹션에 재정의를 배치하지 않는 한 디바이스 개체에 적용되는 보안은 이 문자열에서 파생됩니다.
보안 설정은 SDDL(Security Descriptor Definition Language)의 하위 집합에 지정됩니다. 미리 정의된 상수 집합(SDDL_DEVOBJ_XXX)도 제공됩니다. 자세한 내용은 디바이스 개체 보안 참조하세요.
[in, optional] DeviceClassGuid
DefaultSDDLString, DeviceType, DeviceCharacteristics및 전용 매개 변수에 대한 가능한 재정의가 포함된 레지스트리 섹션을 식별하는 GUID에 대한 포인터입니다.
DeviceObject
새로 만든 DEVICE_OBJECT 구조체에 대한 포인터를 받는 변수에 대한 포인터입니다. DEVICE_OBJECT 구조체는 페이지가 없는 풀에서 할당됩니다.
반환 값
WdmlibIoCreateDeviceSecure 성공 시 STATUS_SUCCESS 반환하거나 실패 시 적절한 NTSTATUS 오류 코드를 반환합니다. 이 함수에서 반환할 수 있는 오류 코드의 일부 목록은 다음과 같습니다.
발언
WdmlibIoCreateDeviceSecure 명명된 디바이스 개체를 만들고, 지정된 보안 설정을 적용하고, 개체에 대한 포인터를 반환합니다. 호출자는 IoDeleteDevice호출하여 더 이상 필요하지 않은 경우 개체를 삭제해야 합니다.
이 루틴은 운영 체제의 일부가 아닙니다. 드라이버는 Microsoft Windows 2000 이상 버전의 Windows에서 Wdmsec.lib에 연결하여 루틴을 사용할 수 있습니다. (Wdmsec.lib 라이브러리는 먼저 Microsoft Windows XP 서비스 팩 1 [SP1] 및 Windows Server 2003 버전의 드라이버 개발 키트 [DDK]와 함께 제공되며 Windows 드라이버 키트 [WDK]와 함께 제공됩니다.)
INF 파일에서 해당 보안 설명자를 설정하지 않는 명명된 디바이스 개체를 만드는 드라이버는 WdmlibIoCreateDeviceSecure사용해야 합니다. 자세한 내용은 Device Object만들기를 참조하세요. 호출자는 반환된 디바이스 개체의 특정 멤버를 설정해야 합니다. 자세한 내용은 디바이스 개체 초기화 및 디바이스에 대한 디바이스 유형별 설명서를 참조하세요.
DeviceType 지정하고 DeviceCharacteristics 값을 올바른 매개 변수에 주의해야 합니다. 두 매개 변수 모두 시스템 정의 FILE_XXX 상수를 사용하고 일부 드라이버 작성기는 실수로 잘못된 매개 변수의 값을 지정합니다.
호출자는 반환된 디바이스 개체에서 플래그 필드와 같은 특정 필드를 설정하고 드라이버 정의 정보를 사용하여 디바이스 확장을 초기화해야 합니다. 새 디바이스 개체에 필요한 다른 작업은 디바이스 개체 초기화 디바이스에 대한 디바이스 유형별 설명서를 참조하세요.
DeviceClassGuid 매개 변수에 의해 지정된 GUID는 디바이스 개체에 대한 디바이스 설정 클래스를 결정합니다. (디바이스 설정 클래스에 대한 자세한 내용은 디바이스 설정 클래스참조하세요.) 호출자는 시스템 관리자가 디바이스의 보안 설정을 변경할 수 있도록 값을 제공해야 합니다(예: 특정 사용자에 대한 액세스를 거부). 자세한 내용은 설치 후 디바이스 개체 레지스트리 속성 설정참조하세요.
WDM이 아닌 드라이버는 기존 디바이스 설정 클래스에서 아직 사용하지 않는 새 GUID를 지정합니다. Microsoft Windows SDK에 포함된 GuidGen.exe 도구를 사용하여 새 GUID를 생성합니다.
원시 모드 지원 디바이스를 처리하는 WDM 버스 드라이버는 디바이스의 디바이스 설정 클래스를 지정할 수 있지만 해당 클래스가 이미 만들어진 경우에만 지정할 수 있습니다. 그렇지 않으면 새 GUID를 만듭니다.
디스크, 테이프, CD-ROM 및 RAM 디스크에 대한 디바이스 개체에는 볼륨이 디바이스에 탑재된 적이 없음을 나타내기 위해 초기화된 VPB(볼륨 매개 변수 블록)가 제공됩니다.
WdmlibIoCreateDeviceSecure 드라이버 호출이 오류를 반환하는 경우 드라이버는 해당 디바이스에 할당된 모든 리소스를 해제해야 합니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | 설명 섹션을 참조하세요. |
대상 플랫폼 | 바탕 화면 |
헤더 | wdmsec.h(Wdmsec.h 포함) |
라이브러리 | Wdmsec.lib |
IRQL | PASSIVE_LEVEL |
DDI 규정 준수 규칙 | AddDevice(wdm), HwStorPortProhibitedDDIs(storport), IrqlIoPassive1(wdm), MiniportOnlyWdmDevice |