+ private static void MultipleRequestHandler(Interop.PrivacyPrivilegeManager.CallCause cause, Interop.PrivacyPrivilegeManager.RequestResult[] results,
+ string[] requestedPrivileges, uint privilegesCount, IntPtr userData)
+ {
+ int requestId = (int)userData;
+ if (!s_multipleRequestMap.ContainsKey(requestId))
+ {
+ return;
+ }
+
+ var tcs = s_multipleRequestMap[requestId];
+ RequestMultipleResponseEventArgs requestResponse = new RequestMultipleResponseEventArgs();
+ PermissionRequestResponse[] permissionResponses = new PermissionRequestResponse[privilegesCount];
+
+ for (int iterator = 0; iterator < privilegesCount; ++iterator)
+ {
+ permissionResponses[iterator] = new PermissionRequestResponse
+ {
+ Privilege = requestedPrivileges[iterator],
+ Result = (RequestResult)results[iterator]
+ };
+ }
+ requestResponse.Cause = (CallCause)cause;
+ requestResponse.Responses = permissionResponses;
+
+ foreach (string privilege in requestedPrivileges)
+ {
+ s_PrivilegesInProgress.Remove(privilege);
+ }
+ tcs.SetResult(requestResponse);
+ s_multipleRequestMap.Remove(requestId);
+ }
+