Last active
December 11, 2021 02:36
-
-
Save khchen/190bed34c449b8e0a0eead4c005189bf to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import winim/lean, winim/inc/objbase | |
const | |
IID_IAppIdPolicyHandler* = DEFINE_GUID("b6fea19e-32dd-4367-b5b7-2f5da140e87d") | |
CLSID_AppIdPolicyHandlerClass* = DEFINE_GUID("f1ed7d4c-f863-4de6-a1ca-7253efdee1f3") | |
type | |
IAppIdPolicyHandler* {.pure.} = object | |
lpVtbl*: ptr IAppIdPolicyHandlerVtbl | |
IAppIdPolicyHandlerVtbl* {.pure, inheritable.} = object of IDispatchVtbl | |
SetPolicy*: proc(self: ptr IAppIdPolicyHandler, bstrLdapPath: BSTR, bstrXmlPolicy: BSTR): HRESULT {.stdcall.} | |
GetPolicy*: proc(self: ptr IAppIdPolicyHandler, bstrLdapPath: BSTR, pbstrXmlPolicy: LPBSTR): HRESULT {.stdcall.} | |
GetEffectivePolicy*: proc(self: ptr IAppIdPolicyHandler, pbstrXmlPolicy: LPBSTR): HRESULT {.stdcall.} | |
IsFileAllowed*: proc(self: ptr IAppIdPolicyHandler, bstrXmlPolicy: BSTR, bstrFilePath: BSTR, bstrUserSid: BSTR, pguidResponsibleRuleId: LPGUID, pbStatus: PLONG): HRESULT {.stdcall.} | |
IsPackageAllowed*: proc(self: ptr IAppIdPolicyHandler, bstrXmlPolicy: BSTR, bstrPublisherName: BSTR, bstrPackageName: BSTR, ullPackageVersion: ULONG, bstrUserSid: BSTR, pguidResponsibleRuleId: LPGUID, pbStatus: PLONG): HRESULT {.stdcall.} | |
proc SetPolicy*(self: ptr IAppIdPolicyHandler, bstrLdapPath: BSTR, bstrXmlPolicy: BSTR): ULONG {.inline, discardable.} = {.gcsafe.}: self.lpVtbl.SetPolicy(self, bstrLdapPath, bstrXmlPolicy) | |
proc GetPolicy*(self: ptr IAppIdPolicyHandler, bstrLdapPath: BSTR, pbstrXmlPolicy: LPBSTR): HRESULT {.inline, discardable.} = {.gcsafe.}: self.lpVtbl.GetPolicy(self, bstrLdapPath, pbstrXmlPolicy) | |
proc GetEffectivePolicy*(self: ptr IAppIdPolicyHandler, pbstrXmlPolicy: LPBSTR): HRESULT {.inline, discardable.} = self.lpVtbl.GetEffectivePolicy(self, pbstrXmlPolicy) | |
proc IsFileAllowed*(self: ptr IAppIdPolicyHandler, bstrXmlPolicy: BSTR, bstrFilePath: BSTR, bstrUserSid: BSTR, pguidResponsibleRuleId: LPGUID, pbStatus: PLONG): HRESULT {.inline, discardable.} = self.lpVtbl.IsFileAllowed(self, bstrXmlPolicy, bstrFilePath, bstrUserSid, pguidResponsibleRuleId, pbStatus) | |
proc IsPackageAllowed*(self: ptr IAppIdPolicyHandler, bstrXmlPolicy: BSTR, bstrPublisherName: BSTR, bstrPackageName: BSTR, ullPackageVersion: ULONG, bstrUserSid: BSTR, pguidResponsibleRuleId: LPGUID, pbStatus: PLONG): HRESULT {.inline, discardable.} = self.lpVtbl.IsPackageAllowed(self, bstrXmlPolicy, bstrPublisherName, bstrPackageName, ullPackageVersion, bstrUserSid, pguidResponsibleRuleId, pbStatus) | |
converter converterIAppIdPolicyHandlerToIDispatch*(x: ptr IAppIdPolicyHandler): ptr IDispatch = cast[ptr IDispatch](x) | |
converter converterIAppIdPolicyHandlerToIUnknown*(x: ptr IAppIdPolicyHandler): ptr IUnknown = cast[ptr IUnknown](x) | |
converter converterPointer(x: ptr): ptr PVOID = cast[ptr PVOID](x) | |
when isMainModule: | |
CoInitialize(nil) | |
var pIAppIdPolicyHandler: ptr IAppIdPolicyHandler | |
if CoCreateInstance(&CLSID_AppIdPolicyHandlerClass, NULL, CLSCTX_INPROC_SERVER, | |
&IID_IAppIdPolicyHandler, &pIAppIdPolicyHandler) == S_OK: | |
var bstr: BSTR | |
if pIAppIdPolicyHandler.GetEffectivePolicy(&bstr) == S_OK: | |
echo bstr | |
SysFreeString(bstr) | |
pIAppIdPolicyHandler.Release() | |
CoUninitialize() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment