Out-of-Process 타입의 COM 서버로 만든 WSL SDK

Out-of-Process 스타일로 만든 COM 서버를 이용하여 WSL API를 자유롭게 부를 수 있도록 만들었습니다.

적절한 Wrapper를 추가하기만 하면 Windows PowerShell에서도 WSL API를 CoInitializeSecurity API를 어떻게 불렀는지에 무관하게 편하게 쓸 수 있는 것이 이 모듈의 특징입니다.

좀 더 가다듬어서 첫 릴리스를 만들고, 이 COM SDK를 토대로 Python, Java, Golang용 SDK도 다시 시작해봐야 할 것 같습니다.

샘플 코드:

$obj = New-Object -ComObject 'WslSdk.WslService'

Write-Output 'A WslSdk.WslService object is created'

# Distro Register Check
$distroName = 'Ubuntu-20.04'
Write-Output $obj.IsDistroRegistered($distroName)

# Metadata Query
$o = $obj.GetDefaultDistro()
Write-Output "Distro ID: $($o.DistroId())"
Write-Output "Distro Name: $($o.DistroName())"

$list = $obj.GetDistroList()
Write-Output $list

# Run WSL command
$res = $obj.RunWslCommand($o.DistroName(), "cat /etc/os-release")
Write-Output $res

$obj = $null
3개의 좋아요

COM…오래동안 봐온 키워드지만 아직 잘 모르겠는 개념입니다. 뭔가 레거시하다는 느낌은 있었지만 그건 또 아닌가보네요.

1개의 좋아요

ActiveX 때문에 오명이 붙어서 그렇지, COM이 빠지면 윈도우는 돌아가지 않습니다. Win32 API 만큼이나 중요한 컨셉이죠. ㅎㅎ

2개의 좋아요

오…그렇다면 제가 반드시 정확한 개념을 짚고 넘어가야할 그것이군요…

1개의 좋아요