Pet*_*ter 5 powershell windows-runtime uwp
我正在尝试使用DetachBuffer()的方法Windows.Storage.Streams.DataWriter,但 PowerShell 只识别它应该返回的 IBuffer __ComObject。我已经成功地使用了其他 WinRT 对象,但这个对象给我带来了麻烦。
[void][Windows.Storage.Streams.DataWriter, Windows.Storage.Streams, ContentType = WindowsRuntime]
$dataWriter = [Windows.Storage.Streams.DataWriter]::new()
$dataWriter.WriteByte(0x01)
$buffer = $dataWriter.DetachBuffer()
$buffer
System.__ComObject
$buffer | Get-Member
TypeName: System.__ComObject
Name MemberType Definition
---- ---------- ----------
CreateObjRef Method System.Runtime.Remoting.ObjRef CreateObjRef(type requestedType)
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetLifetimeService Method System.Object GetLifetimeService()
GetType Method type GetType()
InitializeLifetimeService Method System.Object InitializeLifetimeService()
ToString Method string ToString()
Run Code Online (Sandbox Code Playgroud)
我假设我需要“导入” DetachBuffer() 实际上返回的一些 WinRT 类,但除了它实现 IBuffer 接口之外,我不知道它是什么。
在寻找类似问题(IInputStream Interface)的答案时,我发现了这个Reddit 线程,它获取 IBuffer 的内容,如下所示:
[System.Runtime.InteropServices.WindowsRuntime.WindowsRuntimeBufferExtensions].
GetMethod(
'ToArray',
[type[]]@([Windows.Storage.Streams.IBuffer])).
Invoke($null, @($buffer))
Run Code Online (Sandbox Code Playgroud)
从您的问题来看,尚不清楚您想要实现什么目标,但请告诉我这是否有帮助。如果没有,请修改问题,以便清楚您想用 IBuffer 做什么。
正如下面的评论者正确添加的那样:PowerShell 不适用于没有具体类型的 WinRT 对象(在本例中为 IBuffer 接口)。我一直在使用 .Invoke() 来解决这个问题,但以我非常有限的经验来看,这很麻烦,而且并不总是能给你真正需要的东西。
| 归档时间: |
|
| 查看次数: |
314 次 |
| 最近记录: |