프로그래밍

IoCreateDevice와 IoCreateDeviceSecure

NTSTATUS IoCreateDevice(
  _In_      PDRIVER_OBJECT DriverObject,
  _In_      ULONG DeviceExtensionSize,
  _In_opt_  PUNICODE_STRING DeviceName,
  _In_      DEVICE_TYPE DeviceType,
  _In_      ULONG DeviceCharacteristics,
  _In_      BOOLEAN Exclusive,
  _Out_     PDEVICE_OBJECT *DeviceObject
);
NTSTATUS IoCreateDeviceSecure(
  _In_      PDRIVER_OBJECT DriverObject,
  _In_      ULONG DeviceExtensionSize,
  _In_opt_  PUNICODE_STRING DeviceName,
  _In_      DEVICE_TYPE DeviceType,
  _In_      ULONG DeviceCharacteristics,
  _In_      BOOLEAN Exclusive,
  _In_      PCUNICODE_STRING DefaultSDDLString,
  _In_opt_  LPCGUID DeviceClassGuid,
  _Out_     PDEVICE_OBJECT *DeviceObject
);

함수의 원형으로 볼 때에 둘의 차이는 IoCreateDevice에서 DefaultSDDLString와 DeviceClassGuid 두 인자값이 추가가 된 것이 IoCreateDeviceSecure이다. 이 둘의 차이점과 SDDL(Security Descriptor Definition Language)에 대해서는 다음 문서에 자세하게 나와있다. :)


Device Driver Security에 대한 고찰 2.pdf- 출처 : 데브구루