- Timestamp:
- Apr 26, 2019 1:19:49 AM (6 years ago)
- Location:
- trunk/src/VBox/Additions/WINNT/SharedFolders/driver
- Files:
-
- 4 edited
- 4 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/SharedFolders/driver/Makefile.kmk
r78302 r78304 33 33 VBoxSF_LDFLAGS.amd64 = -Entry:DriverEntry 34 34 VBoxSF_SOURCES = \ 35 file.c \ 35 vbsf.cpp \ 36 net.cpp \ 37 file.cpp \ 36 38 info.cpp \ 37 vbsf.cpp \ 38 net.c \ 39 path.c \ 40 vbsfhlp.c \ 39 path.cpp \ 40 vbsfhlp.cpp \ 41 41 VBoxSF.rc 42 42 VBoxSF_SOURCES.x86 = \ -
trunk/src/VBox/Additions/WINNT/SharedFolders/driver/file.cpp
r78303 r78304 226 226 RxCaptureFobx; 227 227 228 PMRX_VBOX_DEVICE_EXTENSION pDeviceExtension = VBoxMRxGetDeviceExtension(RxContext);229 228 PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension = VBoxMRxGetNetRootExtension(capFcb->pNetRoot); 230 229 PMRX_VBOX_FOBX pVBoxFobx = VBoxMRxGetFileObjectExtension(capFobx); … … 282 281 } 283 282 284 ctx.pClient = & pDeviceExtension->hgcmClient;283 ctx.pClient = &g_SfClient; 285 284 ctx.pMap = &pNetRootExtension->map; 286 285 ctx.hFile = pVBoxFobx->hFile; … … 363 362 RxCaptureFobx; 364 363 365 PMRX_VBOX_DEVICE_EXTENSION pDeviceExtension = VBoxMRxGetDeviceExtension(RxContext);366 364 PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension = VBoxMRxGetNetRootExtension(capFcb->pNetRoot); 367 365 PMRX_VBOX_FOBX pVBoxFobx = VBoxMRxGetFileObjectExtension(capFobx); … … 399 397 } 400 398 401 ctx.pClient = & pDeviceExtension->hgcmClient;399 ctx.pClient = &g_SfClient; 402 400 ctx.pMap = &pNetRootExtension->map; 403 401 ctx.hFile = pVBoxFobx->hFile; … … 468 466 RxCaptureFobx; 469 467 470 PMRX_VBOX_DEVICE_EXTENSION pDeviceExtension = VBoxMRxGetDeviceExtension(RxContext);471 468 PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension = VBoxMRxGetNetRootExtension(capFcb->pNetRoot); 472 469 PMRX_VBOX_FOBX pVBoxFobx = VBoxMRxGetFileObjectExtension(capFobx); … … 510 507 fu32Lock |= SHFL_LOCK_WAIT; 511 508 512 vrc = VbglR0SfLock(& pDeviceExtension->hgcmClient, &pNetRootExtension->map, pVBoxFobx->hFile,509 vrc = VbglR0SfLock(&g_SfClient, &pNetRootExtension->map, pVBoxFobx->hFile, 513 510 LowIoContext->ParamsFor.Locks.ByteOffset, LowIoContext->ParamsFor.Locks.Length, fu32Lock); 514 511 … … 534 531 RxCaptureFobx; 535 532 536 PMRX_VBOX_DEVICE_EXTENSION pDeviceExtension = VBoxMRxGetDeviceExtension(RxContext);537 533 PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension = VBoxMRxGetNetRootExtension(capFcb->pNetRoot); 538 534 PMRX_VBOX_FOBX pVBoxFobx = VBoxMRxGetFileObjectExtension(capFobx); … … 543 539 544 540 /* Do the actual flushing of file buffers */ 545 vrc = VbglR0SfFlush(& pDeviceExtension->hgcmClient, &pNetRootExtension->map, pVBoxFobx->hFile);541 vrc = VbglR0SfFlush(&g_SfClient, &pNetRootExtension->map, pVBoxFobx->hFile); 546 542 547 543 Status = VBoxErrorToNTStatus(vrc); … … 560 556 RxCaptureFobx; 561 557 562 PMRX_VBOX_DEVICE_EXTENSION pDeviceExtension = VBoxMRxGetDeviceExtension(RxContext);563 558 PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension = VBoxMRxGetNetRootExtension(capFcb->pNetRoot); 564 559 PMRX_VBOX_FOBX pVBoxFobx = VBoxMRxGetFileObjectExtension(capFobx); … … 571 566 pNewFileSize->QuadPart, pNewFileSize, pNewAllocationSize)); 572 567 573 Assert(pVBoxFobx && pNetRootExtension && pDeviceExtension);568 Assert(pVBoxFobx && pNetRootExtension); 574 569 575 570 cbBuffer = sizeof(SHFLFSOBJINFO); … … 584 579 pObjInfo->cbObject = pNewFileSize->QuadPart; 585 580 586 vrc = VbglR0SfFsInfo(& pDeviceExtension->hgcmClient, &pNetRootExtension->map, pVBoxFobx->hFile,581 vrc = VbglR0SfFsInfo(&g_SfClient, &pNetRootExtension->map, pVBoxFobx->hFile, 587 582 SHFL_INFO_SET | SHFL_INFO_SIZE, &cbBuffer, (PSHFLDIRINFO)pObjInfo); 588 583 -
trunk/src/VBox/Additions/WINNT/SharedFolders/driver/info.cpp
r78302 r78304 35 35 RxCaptureFcb; 36 36 37 PMRX_VBOX_DEVICE_EXTENSION pDeviceExtension = VBoxMRxGetDeviceExtension(RxContext);38 37 PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension = VBoxMRxGetNetRootExtension(capFcb->pNetRoot); 39 38 PMRX_VBOX_FOBX pVBoxFobx = VBoxMRxGetFileObjectExtension(capFobx); … … 175 174 Log(("VBOXSF: MrxQueryDirectory: CallDirInfo: File = 0x%08x, Flags = 0x%08x, Index = %d, u32BufSize = %d\n", 176 175 pVBoxFobx->hFile, fSFFlags, index, u32BufSize)); 177 vrc = VbglR0SfDirInfo(& pDeviceExtension->hgcmClient, &pNetRootExtension->map, pVBoxFobx->hFile,176 vrc = VbglR0SfDirInfo(&g_SfClient, &pNetRootExtension->map, pVBoxFobx->hFile, 178 177 ParsedPath, fSFFlags, index, &u32BufSize, (PSHFLDIRINFO)pHGCMBuffer, &cFiles); 179 178 Log(("VBOXSF: MrxQueryDirectory: u32BufSize after CallDirInfo = %d, rc = %Rrc\n", … … 520 519 RxCaptureFobx; 521 520 522 PMRX_VBOX_DEVICE_EXTENSION pDeviceExtension = VBoxMRxGetDeviceExtension(RxContext);523 521 PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension = VBoxMRxGetNetRootExtension(capFcb->pNetRoot); 524 522 PMRX_VBOX_FOBX pVBoxFobx = VBoxMRxGetFileObjectExtension(capFobx); … … 597 595 } 598 596 599 vrc = VbglR0SfFsInfo(& pDeviceExtension->hgcmClient, &pNetRootExtension->map, pVBoxFobx->hFile,597 vrc = VbglR0SfFsInfo(&g_SfClient, &pNetRootExtension->map, pVBoxFobx->hFile, 600 598 SHFL_INFO_GET | SHFL_INFO_VOLUME, &cbHGCMBuffer, (PSHFLDIRINFO)pHGCMBuffer); 601 599 … … 770 768 } 771 769 772 vrc = VbglR0SfFsInfo(& pDeviceExtension->hgcmClient, &pNetRootExtension->map, pVBoxFobx->hFile,770 vrc = VbglR0SfFsInfo(&g_SfClient, &pNetRootExtension->map, pVBoxFobx->hFile, 773 771 SHFL_INFO_GET | SHFL_INFO_VOLUME, &cbHGCMBuffer, (PSHFLDIRINFO)pHGCMBuffer); 774 772 … … 961 959 RxCaptureFobx; 962 960 NTSTATUS Status = STATUS_SUCCESS; 963 //PMRX_VBOX_DEVICE_EXTENSION pDeviceExtension = VBoxMRxGetDeviceExtension(RxContext);964 961 PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension = VBoxMRxGetNetRootExtension(capFcb->pNetRoot); 965 962 PMRX_VBOX_FOBX pVBoxFobx = VBoxMRxGetFileObjectExtension(capFobx); … … 1272 1269 RxCaptureFobx; 1273 1270 1274 PMRX_VBOX_DEVICE_EXTENSION pDeviceExtension = VBoxMRxGetDeviceExtension(RxContext);1275 1271 PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension = VBoxMRxGetNetRootExtension(capFcb->pNetRoot); 1276 1272 PMRX_VBOX_FOBX pVBoxFobx = VBoxMRxGetFileObjectExtension(capFobx); … … 1403 1399 pSHFLFileInfo->Attr.fMode = NTToVBoxFileAttributes(pInfo->FileAttributes); 1404 1400 1405 Assert(pVBoxFobx && pNetRootExtension && pDeviceExtension);1406 vrc = VbglR0SfFsInfo(& pDeviceExtension->hgcmClient, &pNetRootExtension->map, pVBoxFobx->hFile,1401 Assert(pVBoxFobx && pNetRootExtension); 1402 vrc = VbglR0SfFsInfo(&g_SfClient, &pNetRootExtension->map, pVBoxFobx->hFile, 1407 1403 SHFL_INFO_SET | SHFL_INFO_FILE, &cbBuffer, (PSHFLDIRINFO)pSHFLFileInfo); 1408 1404 -
trunk/src/VBox/Additions/WINNT/SharedFolders/driver/net.cpp
r78303 r78304 79 79 PMRX_V_NET_ROOT pVNetRoot = (PMRX_V_NET_ROOT)pCreateNetRootContext->pVNetRoot; 80 80 81 PMRX_VBOX_DEVICE_EXTENSION pDeviceExtension = VBoxMRxGetDeviceExtension(pCreateNetRootContext->RxContext);82 81 PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension = VBoxMRxGetNetRootExtension(pVNetRoot->pNetRoot); 83 82 … … 158 157 * pNetRootExtension is actually the pNetRoot->Context and it is not NULL. 159 158 */ 160 fInitializeNetRoot = (pNetRootExtension->phgcmClient == NULL);161 162 159 Status = STATUS_SUCCESS; 163 160 164 if ( fInitializeNetRoot)161 if (!pNetRootExtension->fInitialized) 165 162 { 166 163 PWCHAR pRootName; … … 172 169 173 170 pNetRoot->MRxNetRootState = MRX_NET_ROOT_STATE_GOOD; 171 pNetRootExtension->map.root = SHFL_ROOT_NIL; 174 172 175 173 RootNameLength = pNetRoot->pNetRootName->Length - pSrvCall->pSrvCallName->Length; … … 193 191 RootNameLength -= sizeof(WCHAR); 194 192 195 if (!pNetRootExtension-> phgcmClient)193 if (!pNetRootExtension->fInitialized) 196 194 { 197 195 Log(("VBOXSF: MRxCreateVNetRoot: Initialize netroot length = %d, name = %.*ls\n", … … 204 202 } 205 203 206 vrc = VbglR0SfMapFolder(& pDeviceExtension->hgcmClient, ParsedPath, &pNetRootExtension->map);204 vrc = VbglR0SfMapFolder(&g_SfClient, ParsedPath, &pNetRootExtension->map); 207 205 vbsfFreeNonPagedMem(ParsedPath); 208 if ( vrc != VINF_SUCCESS)206 if (RT_SUCCESS(vrc)) 209 207 { 210 Log(("VBOXSF: MRxCreateVNetRoot: VbglR0SfMapFolder failed with %d\n", vrc));211 Status = STATUS_ BAD_NETWORK_NAME;208 pNetRootExtension->fInitialized = true; 209 Status = STATUS_SUCCESS; 212 210 } 213 211 else 214 212 { 215 Status = STATUS_SUCCESS; 216 pNetRootExtension->phgcmClient = &pDeviceExtension->hgcmClient; 213 Log(("VBOXSF: MRxCreateVNetRoot: VbglR0SfMapFolder failed with %d\n", vrc)); 214 pNetRootExtension->map.root = SHFL_ROOT_NIL; 215 Status = STATUS_BAD_NETWORK_NAME; 217 216 } 218 217 } … … 259 258 Log(("VBOXSF: MRxFinalizeNetRoot: NET_ROOT %p\n", pNetRoot)); 260 259 261 if (pNetRootExtension->phgcmClient) 262 { 263 int vrc = VbglR0SfUnmapFolder(pNetRootExtension->phgcmClient, &pNetRootExtension->map); 260 if ( pNetRootExtension->fInitialized 261 && g_SfClient.handle != NULL) 262 { 263 int vrc = VbglR0SfUnmapFolder(&g_SfClient, &pNetRootExtension->map); 264 264 if (vrc != VINF_SUCCESS) 265 265 Log(("VBOXSF: MRxFinalizeVNetRoot: VbglR0SfUnmapFolder failed with %d\n", 266 266 vrc)); 267 pNetRootExtension->phgcmClient = NULL; 267 pNetRootExtension->map.root = SHFL_ROOT_NIL; 268 pNetRootExtension->fInitialized = false; 268 269 } 269 270 -
trunk/src/VBox/Additions/WINNT/SharedFolders/driver/path.cpp
r78303 r78304 34 34 RxCaptureFcb; 35 35 36 PMRX_VBOX_DEVICE_EXTENSION pDeviceExtension = VBoxMRxGetDeviceExtension(RxContext);37 36 PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension = VBoxMRxGetNetRootExtension(capFcb->pNetRoot); 38 37 … … 280 279 /* Call host. */ 281 280 Log(("VBOXSF: vbsfProcessCreate: VbglR0SfCreate called.\n")); 282 vrc = VbglR0SfCreate(& pDeviceExtension->hgcmClient, &pNetRootExtension->map, ParsedPath, pCreateParms);281 vrc = VbglR0SfCreate(&g_SfClient, &pNetRootExtension->map, ParsedPath, pCreateParms); 283 282 284 283 vbsfFreeNonPagedMem(ParsedPath); … … 441 440 if (pCreateParms && pCreateParms->Handle != SHFL_HANDLE_NIL) 442 441 { 443 VbglR0SfClose(& pDeviceExtension->hgcmClient, &pNetRootExtension->map, pCreateParms->Handle);442 VbglR0SfClose(&g_SfClient, &pNetRootExtension->map, pCreateParms->Handle); 444 443 *pHandle = SHFL_HANDLE_NIL; 445 444 } … … 534 533 RxContext->Create.ReturnedCreateInformation = CreateAction; 535 534 535 /* Initialize the FCB if this is the first open. 536 Note! The RxFinishFcbInitialization call expects node types as the 2nd parameter, but is for 537 some reason given enum RX_FILE_TYPE as type. */ 536 538 if (capFcb->OpenCount == 0) 537 539 { … … 556 558 &Data.EndOfFile, 557 559 &Data.EndOfFile); 558 /** @todo r=bird: Use FileTypeDirectory/RDBSS_NTC_STORAGE_TYPE_DIRECTORY here 559 * for directories? */ 560 RxFinishFcbInitialization(capFcb, RDBSS_STORAGE_NTC(FileTypeFile), &InitPacket); 560 if (Info.Attr.fMode & RTFS_DOS_DIRECTORY) 561 RxFinishFcbInitialization(capFcb, (RX_FILE_TYPE)RDBSS_NTC_STORAGE_TYPE_DIRECTORY, &InitPacket); 562 else 563 RxFinishFcbInitialization(capFcb, (RX_FILE_TYPE)RDBSS_NTC_STORAGE_TYPE_FILE, &InitPacket); 561 564 } 562 565 … … 652 655 } 653 656 654 static NTSTATUS vbsfSetFileInfoOnClose(PMRX_VBOX_DEVICE_EXTENSION pDeviceExtension, 655 PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension, 657 static NTSTATUS vbsfSetFileInfoOnClose(PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension, 656 658 PMRX_VBOX_FOBX pVBoxFobx, 657 659 PFILE_BASIC_INFORMATION pInfo, … … 701 703 pSHFLFileInfo->Attr.fMode = NTToVBoxFileAttributes(pInfo->FileAttributes); 702 704 703 vrc = VbglR0SfFsInfo(& pDeviceExtension->hgcmClient, &pNetRootExtension->map, pVBoxFobx->hFile,705 vrc = VbglR0SfFsInfo(&g_SfClient, &pNetRootExtension->map, pVBoxFobx->hFile, 704 706 SHFL_INFO_SET | SHFL_INFO_FILE, &cbBuffer, (PSHFLDIRINFO)pSHFLFileInfo); 705 707 … … 718 720 * Updates file attributes if necessary. 719 721 */ 720 NTSTATUS vbsfCloseFileHandle(PMRX_VBOX_DEVICE_EXTENSION pDeviceExtension, 721 PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension, 722 PMRX_VBOX_FOBX pVBoxFobx) 722 static NTSTATUS vbsfCloseFileHandle(PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension, 723 PMRX_VBOX_FOBX pVBoxFobx) 723 724 { 724 725 NTSTATUS Status = STATUS_SUCCESS; … … 740 741 * to cancel any effect of the file read/write operations on the host. 741 742 */ 742 Status = vbsfSetFileInfoOnClose(pDeviceExtension, 743 pNetRootExtension, 743 Status = vbsfSetFileInfoOnClose(pNetRootExtension, 744 744 pVBoxFobx, 745 745 &pVBoxFobx->FileBasicInfo, … … 747 747 } 748 748 749 vrc = VbglR0SfClose(& pDeviceExtension->hgcmClient,749 vrc = VbglR0SfClose(&g_SfClient, 750 750 &pNetRootExtension->map, 751 751 pVBoxFobx->hFile); … … 767 767 RxCaptureFobx; 768 768 769 PMRX_VBOX_DEVICE_EXTENSION pDeviceExtension = VBoxMRxGetDeviceExtension(RxContext);770 769 PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension = VBoxMRxGetNetRootExtension(capFcb->pNetRoot); 771 770 PMRX_VBOX_FOBX pVBoxFobx = VBoxMRxGetFileObjectExtension(capFobx); … … 796 795 /* Close file */ 797 796 if (pVBoxFobx->hFile != SHFL_HANDLE_NIL) 798 vbsfCloseFileHandle(p DeviceExtension, pNetRootExtension, pVBoxFobx);797 vbsfCloseFileHandle(pNetRootExtension, pVBoxFobx); 799 798 800 799 if (capFcb->FcbState & FCB_STATE_DELETE_ON_CLOSE) … … 818 817 RxCaptureFobx; 819 818 820 PMRX_VBOX_DEVICE_EXTENSION pDeviceExtension = VBoxMRxGetDeviceExtension(RxContext);821 819 PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension = VBoxMRxGetNetRootExtension(capFcb->pNetRoot); 822 820 PMRX_VBOX_FOBX pVBoxFobx = VBoxMRxGetFileObjectExtension(capFobx); … … 832 830 /* Close file first if not already done. */ 833 831 if (pVBoxFobx->hFile != SHFL_HANDLE_NIL) 834 vbsfCloseFileHandle(p DeviceExtension, pNetRootExtension, pVBoxFobx);832 vbsfCloseFileHandle(pNetRootExtension, pVBoxFobx); 835 833 836 834 Log(("VBOXSF: vbsfRemove: RemainingName->Length %d\n", RemainingName->Length)); … … 840 838 841 839 /* Call host. */ 842 vrc = VbglR0SfRemove(& pDeviceExtension->hgcmClient, &pNetRootExtension->map,840 vrc = VbglR0SfRemove(&g_SfClient, &pNetRootExtension->map, 843 841 ParsedPath, 844 842 pVBoxFobx->Info.Attr.fMode & RTFS_DOS_DIRECTORY ? SHFL_REMOVE_DIR : SHFL_REMOVE_FILE); … … 868 866 RxCaptureFobx; 869 867 870 PMRX_VBOX_DEVICE_EXTENSION pDeviceExtension = VBoxMRxGetDeviceExtension(RxContext);871 868 PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension = VBoxMRxGetNetRootExtension(capFcb->pNetRoot); 872 869 PMRX_VBOX_FOBX pVBoxFobx = VBoxMRxGetFileObjectExtension(capFobx); … … 889 886 /* Must close the file before renaming it! */ 890 887 if (pVBoxFobx->hFile != SHFL_HANDLE_NIL) 891 vbsfCloseFileHandle(p DeviceExtension, pNetRootExtension, pVBoxFobx);888 vbsfCloseFileHandle(pNetRootExtension, pVBoxFobx); 892 889 893 890 /* Mark it as renamed, so we do nothing during close */ … … 919 916 920 917 Log(("VBOXSF: vbsfRename: Calling VbglR0SfRename\n")); 921 vrc = VbglR0SfRename(& pDeviceExtension->hgcmClient, &pNetRootExtension->map, SrcPath, DestPath, flags);918 vrc = VbglR0SfRename(&g_SfClient, &pNetRootExtension->map, SrcPath, DestPath, flags); 922 919 923 920 vbsfFreeNonPagedMem(SrcPath); -
trunk/src/VBox/Additions/WINNT/SharedFolders/driver/vbsf.cpp
r78302 r78304 41 41 PRDBSS_DEVICE_OBJECT VBoxMRxDeviceObject; 42 42 43 uint64_t g_abPadding111[256] = {0};44 43 /** The shared folder service client structure. */ 45 44 VBGLSFCLIENT g_SfClient; … … 50 49 /** Shared folders features (SHFL_FEATURE_XXX). */ 51 50 uint64_t g_fSfFeatures = 0; 52 uint64_t g_abPadding222[256] = {0};53 51 54 52 … … 619 617 620 618 AssertPtr(pDeviceExtension); 621 pDeviceExtension->hgcmClient = g_SfClient;622 619 623 620 /* The redirector driver must intercept the IOCTL to avoid VBOXSVR name resolution … … 812 809 } 813 810 814 vrc = VbglR0SfQueryMappings(& pDeviceExtension->hgcmClient, mappings, &cMappings);811 vrc = VbglR0SfQueryMappings(&g_SfClient, mappings, &cMappings); 815 812 if (vrc == VINF_SUCCESS) 816 813 { … … 963 960 *pu8ConnectId)); 964 961 965 vrc = VbglR0SfQueryMapName(& pDeviceExtension->hgcmClient,962 vrc = VbglR0SfQueryMapName(&g_SfClient, 966 963 *pu8ConnectId & ~0x80 /** @todo fix properly */, 967 964 pString, ShflStringSizeOfBuffer(pString)); -
trunk/src/VBox/Additions/WINNT/SharedFolders/driver/vbsf.h
r78302 r78304 72 72 FAST_MUTEX mtxLocalCon; 73 73 74 /* The HGCM client information. */75 VBGLSFCLIENT hgcmClient;76 77 74 /** Saved pointer to the original IRP_MJ_DEVICE_CONTROL handler. */ 78 75 NTSTATUS (* pfnRDBSSDeviceControl) (PDEVICE_OBJECT pDevObj, PIRP pIrp); … … 81 78 82 79 } MRX_VBOX_DEVICE_EXTENSION, *PMRX_VBOX_DEVICE_EXTENSION; 83 #ifdef RT_ARCH_AMD6484 AssertCompileMemberOffset(MRX_VBOX_DEVICE_EXTENSION, cLocalConnections, 8);85 AssertCompileMemberOffset(MRX_VBOX_DEVICE_EXTENSION, wszLocalConnectionName, 0x28);86 AssertCompileMemberOffset(MRX_VBOX_DEVICE_EXTENSION, mtxLocalCon, 0xF8);87 AssertCompileMemberSize(MRX_VBOX_DEVICE_EXTENSION, mtxLocalCon, 7 * 8);88 AssertCompileMemberOffset(MRX_VBOX_DEVICE_EXTENSION, hgcmClient, 0x130);89 AssertCompileMemberOffset(MRX_VBOX_DEVICE_EXTENSION, pfnRDBSSDeviceControl, 0x130 + 16);90 #endif91 80 92 81 /* … … 95 84 typedef struct _MRX_VBOX_NETROOT_EXTENSION 96 85 { 97 /* The pointert to HGCM client information in device extension. */98 VBGLSFCLIENT *phgcmClient;99 100 86 /* The shared folder map handle of this netroot. */ 101 87 VBGLSFMAP map; 88 /** Simple initialized (mapped folder) indicator that works better with the 89 * zero filled defaults than SHFL_ROOT_NIL. */ 90 bool fInitialized; 102 91 } MRX_VBOX_NETROOT_EXTENSION, *PMRX_VBOX_NETROOT_EXTENSION; 103 92 … … 232 221 IN ULONG BufferLength); 233 222 NTSTATUS vbsfRemove(IN PRX_CONTEXT RxContext); 234 NTSTATUS vbsfCloseFileHandle(PMRX_VBOX_DEVICE_EXTENSION pDeviceExtension,235 PMRX_VBOX_NETROOT_EXTENSION pNetRootExtension,236 PMRX_VBOX_FOBX pVBoxFobx);237 223 238 224 void vbsfNtCopyInfoToLegacy(PMRX_VBOX_FOBX pVBoxFobx, PCSHFLFSOBJINFO pInfo);
Note:
See TracChangeset
for help on using the changeset viewer.