MCPcopy Create free account
hub / github.com/bobranten/Ext4Fsd / Ext2StartSrv

Function Ext2StartSrv

Ext2Mgr/Ext2Pipe.cpp:648–706  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

646}
647
648int Ext2StartSrv()
649{
650 DWORD pid[12] = {0}, num;
651 int rc = -1;
652
653 num = Ext2QuerySrv(_T("Ext2Srv.exe"), pid, 10);
654 if (num) {
655 /* already started */
656 rc = num;
657 goto errorout;
658 }
659
660 if (IsVistaOrAbove()) {
661
662 DWORD sid = 0, mysid = 0;
663 HANDLE token = 0;
664
665 num = Ext2QuerySrv(_T("Explorer.exe"), &pid[0], 10);
666 if (!num) {
667 goto errorout;
668 }
669
670 pid[num] = GetCurrentProcessId();
671 num++;
672
673 rc = ProcessIdToSessionId(GetCurrentProcessId(), &mysid);
674 if (!rc) {
675 rc = -1 * GetLastError();
676 goto errorout;
677 }
678
679 while (num > 0 && pid[num - 1]) {
680
681 rc = Ext2CreateToken(pid[--num], &sid, &token);
682 if (rc > 0) {
683 if (sid == mysid) {
684 rc = Ext2StartSrvAsUser(token);
685 } else {
686 rc = 0;
687 }
688 if (token && token != INVALID_HANDLE_VALUE) {
689 CloseHandle(token);
690 token = NULL;
691 }
692 if (rc == 1) {
693 break;
694 }
695 }
696 }
697
698 } else {
699
700 Ext2StartSrvAsElevated();
701 }
702
703errorout:
704
705 return rc;

Callers 2

Ext2OpenPipeFunction · 0.85
Ext2StartPipeSrvFunction · 0.85

Calls 5

Ext2QuerySrvFunction · 0.85
IsVistaOrAboveFunction · 0.85
Ext2CreateTokenFunction · 0.85
Ext2StartSrvAsUserFunction · 0.85
Ext2StartSrvAsElevatedFunction · 0.85

Tested by

no test coverage detected