mirror of
				https://github.com/winfsp/winfsp.git
				synced 2025-10-30 03:28:38 -05:00 
			
		
		
		
	sys: originating process id
This commit is contained in:
		| @@ -545,6 +545,7 @@ NTSTATUS FspFsvolCreatePrepare( | ||||
|     SECURITY_CLIENT_CONTEXT SecurityClientContext; | ||||
|     HANDLE UserModeAccessToken; | ||||
|     PEPROCESS Process; | ||||
|     HANDLE ProcessId; | ||||
|     FSP_FILE_NODE *FileNode; | ||||
|     FSP_FILE_DESC *FileDesc; | ||||
|     PFILE_OBJECT FileObject; | ||||
| @@ -578,11 +579,15 @@ NTSTATUS FspFsvolCreatePrepare( | ||||
|         /* get a pointer to the current process so that we can close the impersonation token later */ | ||||
|         Process = PsGetCurrentProcess(); | ||||
|         ObReferenceObject(Process); | ||||
|         ProcessId = PsGetProcessId(Process); | ||||
|  | ||||
|         /* send the user-mode handle to the user-mode file system */ | ||||
|         FspIopRequestContext(Request, RequestAccessToken) = UserModeAccessToken; | ||||
|         FspIopRequestContext(Request, RequestProcess) = Process; | ||||
|         Request->Req.Create.AccessToken = (UINT_PTR)UserModeAccessToken; | ||||
|         ASSERT((UINT64)(UINT_PTR)UserModeAccessToken <= 0xffffffffULL); | ||||
|         ASSERT((UINT64)(UINT_PTR)ProcessId <= 0xffffffffULL); | ||||
|         Request->Req.Create.AccessToken = | ||||
|             ((UINT64)(UINT_PTR)ProcessId << 32) | (UINT64)(UINT_PTR)UserModeAccessToken; | ||||
|  | ||||
|         return STATUS_SUCCESS; | ||||
|     } | ||||
|   | ||||
| @@ -1573,6 +1573,7 @@ NTSTATUS FspFsvolSetInformationPrepare( | ||||
|     SECURITY_CLIENT_CONTEXT SecurityClientContext; | ||||
|     HANDLE UserModeAccessToken; | ||||
|     PEPROCESS Process; | ||||
|     HANDLE ProcessId; | ||||
|  | ||||
|     SecuritySubjectContext = FspIopRequestContext(Request, RequestSubjectContextOrAccessToken); | ||||
|  | ||||
| @@ -1604,11 +1605,15 @@ NTSTATUS FspFsvolSetInformationPrepare( | ||||
|     /* get a pointer to the current process so that we can close the impersonation token later */ | ||||
|     Process = PsGetCurrentProcess(); | ||||
|     ObReferenceObject(Process); | ||||
|     ProcessId = PsGetProcessId(Process); | ||||
|  | ||||
|     /* send the user-mode handle to the user-mode file system */ | ||||
|     FspIopRequestContext(Request, RequestSubjectContextOrAccessToken) = UserModeAccessToken; | ||||
|     FspIopRequestContext(Request, RequestProcess) = Process; | ||||
|     Request->Req.SetInformation.Info.Rename.AccessToken = (UINT_PTR)UserModeAccessToken; | ||||
|     ASSERT((UINT64)(UINT_PTR)UserModeAccessToken <= 0xffffffffULL); | ||||
|     ASSERT((UINT64)(UINT_PTR)ProcessId <= 0xffffffffULL); | ||||
|     Request->Req.SetInformation.Info.Rename.AccessToken = | ||||
|         ((UINT64)(UINT_PTR)ProcessId << 32) | (UINT64)(UINT_PTR)UserModeAccessToken; | ||||
|  | ||||
|     return STATUS_SUCCESS; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user