Hi,
I was wondering if anyone has had a similar problem to this one and
if it was solvable… I am a filter filtering the mrxsmb redirector on XP
SP1 and using the stream file alternative to IoCancelFileOpen; that is, I
clone the fileobject and do the CREATE with the cloned object before sending
down the “real” CREATE. After creating my cloned FILE_OBJECT, I send down a
CLEANUP IRP on it to allow any sharing state to be released, and I hold on
to my FILE_OBJECT reference. Then I send down the real CREATE. This works
great on FAT and NTFS, but when filtering the redirector, I am having
problems with the real CREATE failing with STATUS_SHARING_VIOLATION,
apparently because I still have a reference to my clone file object.
Digging into some assembly, I found the error code to be returned by
SmbPseContinueOrdinaryExchange in mrxsmb, with the stack looking like this:
ChildEBP RetAddr Args to Child
f71eae60 f81f7da4 820da468 00000000 820da468
mrxsmb!SmbPseContinueOrdinaryExchange+0x15
f71eae90 f81ef4e4 00000000 00000028 00000000
mrxsmb!SmbPseOrdinaryExchange+0x1b7
f71eaedc f81f77e4 000da468 81eaa488 f81f6d47
mrxsmb!SmbPseExchangeStart_Create+0x328
f71eaee8 f81f6d47 820da468 00000005 e1289008
mrxsmb!SmbPseExchangeStart_default+0xe
f71eaf04 f81f1118 81f42ba8 81eaa508 81eaa488
mrxsmb!SmbCeInitiateExchange+0x29d
f71eaf4c f8230775 00eaa488 0012019f 81eaa488 mrxsmb!MRxSmbCreate+0x27c
f71eafa0 f8230557 81eaa488 00000004 e10b2c18
rdbss!RxCollapseOrCreateSrvOpen+0xf4
f71eb004 f822ee1b 81eaa488 f71eb050 827dcf48 rdbss!RxCreateFromNetRoot+0x2ba
f71eb064 f8225920 81eaa488 820ad888 f822e030 rdbss!RxCommonCreate+0x2e0
f71eb108 f822ec97 f822e030 827dcf00 827dcfb8 rdbss!RxFsdCommonDispatch+0x333
f71eb130 f81ea862 8204d9a8 827dcf00 8204d9a8 rdbss!RxFsdDispatch+0xb4
f71eb150 80a20812 00000000 017dcf48 8204d9a8 mrxsmb!MRxSmbFsdDispatch+0x132
f71eb168 80cae110 827dcfd4 827dcff8 00000000 nt!IopfCallDriver+0x4f
f71eb18c f70f8518 81f64540 827dcf48 00000001 nt!IovCallDriver+0x9e
f71eb510 80a20812 81f64540 827dcf48 81f64540 mydriver!MyDriverCreate+0xe0a
[c:\somepath\mydriver.c @ 3642]
f71eb528 80cae110 827dcf58 827dcf48 820ad888 nt!IopfCallDriver+0x4f
f71eb54c 80b1cd5b 8204d990 80004528 81e53a00 nt!IovCallDriver+0x9e
f71eb630 80b96877 8204d9a8 00000000 81e53a50 nt!IopParseDevice+0xb84
f71eb6a8 80b91570 00000000 f71eb6e8 00000042 nt!ObpLookupObjectName+0x59b
f71eb6fc 80b0acdc 00000000 00000000 f71eb801 nt!ObOpenObjectByName+0x13e
I am currently trying to replicate the problem using the smbmrx sample
provided in the IFSkit so I have symbols and source
Sorry for hideously
long email, but any help is GREATLY appreciated…
Matt