CcUnpinRepinnedBcb - More...

Hi!
Thanks Tony! Thanks Dan! I really appreciate your help.
I think I am beginning to figure out were I am going wrong. What I am trying to do it create folders in my volume. My routines are not very optimised and map and pin data at will.
The assertion occurs when I try to pin a 0x3400 byte range and then subsequently do a CcUnpinRepinnedBcb. I am not actually using the whole range. So if I limit myself to just 0x400 bytes, the routine goes off fine.

But I still get into trouble when I create another folder. I might be ‘forgetting’ to unpin a BCB somewhere…

But I still don’t understand how pinning a large range could cause trouble. I do pin the data successfully. I also am not uninitialising the cache prematurely. The file object is the the volume stream file object and I don’t uninitialize its cache till system shutdown.

Any ideas / suggestions.

Thanks for your time!

Manoj

Daniel Lovinger wrote: Semantically, that isn’t an assert. C0000005 is STATUS_ACCESS_VIOLATION and you are getting it thrown as an exception. “First chance” (which you basically never want to bother seeing) is when the debugger breaks out as exception is being first thrown and you would see it before the callstack is walked for a handler, but the “second chance” is when no exception handler up the callstack said it could handle it. I.e., your machine is about to bluescreen on you. This is actually correct for S_A_V: handling it in some way other than crashing means you are most likely letting the machine run forward in some unknowably corrupt state. This is a bad idea.

But, the crash.

Tony’s in the right part of the forest. +70 into the BCB (in this release of Windows, etc.) is another private context structure pointer of the cache manager’s. It is what gets built/referenced on CcInitializeCacheMap and what gets dereferenced/torn-down when you CcUninitializeCacheMap. You may have a synchronization gap between this path and the one that can CcUninit this object which the Bcb is built on, usually IRP_MJ_CLEANUP. It is not legal to use Cc APIs and hold references to BCBs, etc. unless you are within a reference bounded by the CcInit/Uninit calls.

What I’d look at first is to make sure you’ve actually got a BCB in your hands. !pool it. If the tag isn’t Cc - and allocated, and allocated at a block -8 from the pointer you have in your hands (covering the pool header) - it may be a wild pointer; however, Cc also would have ripped up the BCB and returned it to the pool if the case I described above happened. Since you are in the process of taking an S_A_V exception, its unlikely the pointer at +70 is valid.

dan


This posting is provided “AS IS” with no warranties, and
confers no rights.

-----Original Message-----
From: Tony Mason [mailto:xxxxx@osr.com]
Sent: Wednesday, April 10, 2002 7:49 AM
To: File Systems Developers
Subject: [ntfsd] RE: CcUnpinRepinnedBcb - Assertion Failure

Manoj,

I know that in a case like this, I’d look at the code leading up to it.
Since I don’t have your exact system in front of me, I grabbed the code off
of an XP system I have under the debugger:

kd> u CcUnpinRepinnedBcb
nt!CcUnpinRepinnedBcb:
804db556 53 push ebx
804db557 56 push esi
804db558 8b74240c mov esi,[esp+0xc]
804db55c 8b4670 mov eax,[esi+0x70]
804db55f 33db xor ebx,ebx
804db561 385c2410 cmp [esp+0x10],bl
804db565 57 push edi
804db566 8b7c2418 mov edi,[esp+0x18]
kd> u
nt!CcUnpinRepinnedBcb+14:
804db56a 891f mov [edi],ebx
804db56c 0f8486000000 je nt!CcUnpinRepinnedBcb+0xa2 (804db5f8)
804db572 f6406d02 test byte ptr [eax+0x6d],0x2

Note that my eax offset is different than yours, which just tells me that
some data structure has changed size. The trick is to figure out (if
possible) which data structure it was.

EAX came from ESI+0x70. ESI came from the stack - it was 12 bytes offset
from the stack upon entry. Since there’s no EBP here, this has been “frame
pointer optimized” which would show up if you used the “kv” command in
WinDBG. On entry ESP would point to the return address, and ESP+0x4 would
point to the first parameter. Pushing two arguments onto the stack would
give us ESP+0x8 would be the return address and ESP+0xC would be the first
parameter.

SO - ESI is the first parameter of the function. And - voila! That is the
BCB itself. Of course, the disappointing thing here is that the BCB data
structure isn’t a published structure. It is a PVOID and hence opaque.
Whatever the case, EAX is loaded from the ESI register (in my code, the
DWORD field 0x70 bytes from the beginning of the structure). Since I don’th
have your system in front of me I cannot try what I’d do next - use the
"!pool " command on the EAX address (that might give me a hint as
to what the EAX register contains).

But I can guess that whatever it is doesn’t point to the right data
structure. I suspect that this is some data structure that YOU affect.
Have you, for instance, closed the file object from which you first created
the BCB (CcPinRead)?

Also, as a debugging aid, you might want to see which file this is (by
calling CcGetFileObjectFromBcb). Somehow I suspect that you are tearing
down a data structure prematurely.

Perhaps someone with more insight into how the Cache Manager is handling
BCBs (e.g., the actual definition of the BCB structure) could provide you
with more insight. In the meantime though, try looking at what YOU are
doing that is causing state to be discarded.

Regards,

Tony

Tony Mason
Consulting Partner
OSR Open Systems Resources, Inc.
http://www.osr.com

Hope to see you at the next OSR file systems class October 7, 2002!
-----Original Message-----
From: Manoj Paul Joseph [mailto:xxxxx@yahoo.com]
Sent: Wednesday, April 10, 2002 3:36 AM
To: File Systems Developers
Subject: [ntfsd] CcUnpinRepinnedBcb - Assertion Failure

Hi!
I am getting into trouble with the nt!CcUnpinRepinnedBcb function. I am
using the Cache manager’s Pinning interface to handle my volume’s meta data
(including directories).
To flush meta-data during file creation, I save up the BCBs after doing
a CcRepinBcb. Once I have completed the create and released the resources, I
do a CcUnpinRepinnedBcb on all the saved BCBs. I keep getting an assertion
failure everytime on a particular BCB.
This is what I see in Win Debug
---------------------------------
Access violation - code c0000005 (!!! second chance !!!)
nt!CcUnpinRepinnedBcb+1c:
80103f4e f6406902 test byte ptr [eax+0x69],0x2
---------------------------------
It doesn’t happen (the assertion) if I have just that BCB to flush.
I don’t have a checked build of Win NT and I don’t have a clue as to
what

8077f8e8 00000001 fcacd628 nt!CcUnpinRepinnedBcb+0x1c
80796528 fcd25b5e 8076fea8 ext2!Ext2FlushSavedBCBs+0xb6
80796528 8076fea8 00000001 ext2!Ext2CommonCreate+0x14ee
807929c0 8076fea8 fcacdaa0 ext2!Ext2Create+0x172
80172720 807c0e18 00000000 nt!IofCallDriver+0x37
807c0e30 00000000 fcacd998 nt!IopParseDevice+0x7cc
00000000 fcacda54 00000040 nt!ObpLookupObjectName+0x283
016be9d4 00000000 acda9001 nt!ObOpenObjectByName+0xbb
016bea0c 00100001 016be9d4 nt!IoCreateFile+0x436
016bea0c 00100001 016be9d4 nt!NtCreateFile+0x2e
016bea0c 00100001 016be9d4 nt!KiSystemService+0xc4
016bec70 00000000 00000000 ntdll!ZwCreateFile+0xb
77c40000 00001051 00001051 0x77ca11ba
77f76aa0 00000409 77cd1000 ntdll!RtlImageDirectoryEntryToData+0x21
00000000 00000000 00000000 0x16beb98
fcacdd58 fcacdd54 0042b6e0 nt!KiCallUserMode+0x4
00000002 fcacdd28 00000018 nt!KeUserModeCallback+0x9e
a02bb6e0 0000007b 0031006e win32k!SfnDWORD+0xb5
a02bb6e0 0000007b 0031006e win32k!xxxSendMes Download Yahoo! Score Tracker
for live cricket scores on your desktop — You are currently subscribed to
ntfsd as: xxxxx@osr.com To unsubscribe send a blank email to
%%email.unsub%%


You are currently subscribed to ntfsd as: xxxxx@windows.microsoft.com
To unsubscribe send a blank email to %%email.unsub%%


You are currently subscribed to ntfsd as: xxxxx@yahoo.com
To unsubscribe send a blank email to %%email.unsub%%

-----------------------------------
Manoj Paul Joseph,
Master of Computer Applications (final year student),
School of Computer Science and Engineering,
Anna University,
Chennai (Madras),
India.

---------------------------------
Download Yahoo! Score Tracker for live cricket scores on your desktop

Could you tell us what the first 4 bytes of that “BCB” are?
?
Thanks.
?
??? dan


This posting is provided “AS IS” with no warranties, and
confers no rights.
?
-----Original Message-----
From: Manoj Paul Joseph [mailto:xxxxx@yahoo.com]
Sent: Thursday, April 11, 2002 5:11 AM
To: File Systems Developers
Subject: [ntfsd] CcUnpinRepinnedBcb - More…

Hi!
?Thanks Tony! Thanks Dan! I really appreciate your help.
??? I think I am beginning to figure out were I am going wrong. What I am trying to do it create folders in my volume. My routines are not very optimised and map and pin data at will.
???The assertion occurs when I try to pin a 0x3400 byte range and then subsequently do a CcUnpinRepinnedBcb. I am not actually using the whole range. So if I limit myself to just 0x400 bytes, the routine goes off fine.
??? But I still get into trouble?when I create another folder. I might be ‘forgetting’ to unpin a BCB somewhere…?
??? But I still don’t understand how pinning a large range could cause trouble. I do pin the data successfully. I also am not uninitialising the cache prematurely. The file object is the the volume stream file object and I?don’t uninitialize its cache?till system shutdown.
??? Any ideas / suggestions.
Thanks for your time!
Manoj

Hi Dan!
The memory pointed to by the BCB (before the CcUnpinRepinnedBcb) doesn’t look like BCB contents at all. :wink: It looks to me like I am (indeed) handling a bad reference.

I see that at offset 52-55 there is the reference count (or something like that) of the BCB. It gets incremented on doing a RepinBCB. (I have underlined that range.)
For this particular BCB it is zero right after the CcPinMappedData.

Before CcUnpinRepinnedBcb
8075b3c8 28 b4 72 80 12 00 11 00 00 00 4d 41 4e 4f 4a 20 (.r…MANOJ
8075b3d8 20 20 20 20 20 20 20 20 20 00 7c 80 00 00 00 00 .|…
8075b3e8 00 00 00 00 00 00 00 00 00 b0 fd 7f ff bf fd 7f …
8075b3f8 00 00 00 00 01 00 00 00 02 00 00 13 54 68 72 e5 …Thr.
!pool of the BCB shows the owner to be the Cc at times and some other process at times.
I am dumping the first 64 bytes of the BCB at variour stages…

After CcMapData
807c4361 00 e0 c1 48 5c 79 80 03 00 00 00 00 00 00 00 00 …H\y…
807c4371 00 e4 c1 c8 11 79 80 00 00 00 00 00 00 00 00 00 …y…
807c4381 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …
807c4391 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …

After CcPinMappedData (The BCB Pointer has changed)
8075b3c8 fa 02 28 00 00 34 00 00 00 0c 00 00 00 00 00 00 …(…4…
8075b3d8 08 dd 7c 80 88 df 7c 80 08 d5 7c 80 00 00 00 00 …|…|…|…
8075b3e8 00 00 00 00 00 00 00 00 00 b0 fd 7f ff bf fd 7f …
8075b3f8 00 00 00 00 00 00 00 00 02 00 00 13 54 68 72 e5 …Thr.

kd> !pool 0x8075B3C8
*8075b3c0 size: 40 previous size: a0 (Allocated) *Cc
kd> !pool 0x8075B3C8 1
*8075b3c0 size: 40 previous size: a0 (Allocated) *Cc
8075b3c8 002802fa 00003400 00000c00 00000000
8075b3d8 807cdd08 807cdf88 807cd508 00000000

Before Repin
8075b3c8 fa 02 28 00 00 34 00 00 00 0c 00 00 00 00 00 00 …(…4…
8075b3d8 08 dd 7c 80 88 df 7c 80 08 d5 7c 80 00 00 00 00 …|…|…|…
8075b3e8 00 00 00 00 00 00 00 00 00 b0 fd 7f ff bf fd 7f …
8075b3f8 00 00 00 00 00 00 00 00 02 00 00 13 54 68 72 e5 …Thr.

After Repin
8075b3c8 fa 02 28 00 00 34 00 00 00 0c 00 00 00 00 00 00 …(…4…
8075b3d8 08 dd 7c 80 88 df 7c 80 08 d5 7c 80 00 00 00 00 …|…|…|…
8075b3e8 00 00 00 00 00 00 00 00 00 b0 fd 7f ff bf fd 7f …
8075b3f8 00 00 00 00 01 00 00 00 02 00 00 13 54 68 72 e5 …Thr.

I do an Unpin now
Before CcUnpinRepinnedBcb
8075b3c8 28 b4 72 80 12 00 11 00 00 00 4d 41 4e 4f 4a 20 (.r…MANOJ
8075b3d8 20 20 20 20 20 20 20 20 20 00 7c 80 00 00 00 00 .|…
8075b3e8 00 00 00 00 00 00 00 00 00 b0 fd 7f ff bf fd 7f …
8075b3f8 00 00 00 00 01 00 00 00 02 00 00 13 54 68 72 e5 …Thr.

kd> !pool 0x8075B3C8
*8075b3c0 size: 40 previous size: a0 (Allocated) *Nbt2

I do an CcUnpinRepinnedBcb now

Access violation - code c0000005 (!!! second chance !!!)
nt!CcUnpinRepinnedBcb+1c:
80103f4e f6406902 test byte ptr [eax+0x69],0x2

These are the calls to Pin the data…

if( !CcMapData( PtrVCB->PtrStreamFileObject,
&VolumeByteOffset,
NumberOfBytesToRead,
TRUE,
&PtrBitmapBCB,
&PtrBitmapBuffer ) )
{
try_return( BlockNo = 0 );
}
// Some processing…
if(! CcPinMappedData( PtrVCB->PtrStreamFileObject,
&VolumeByteOffset,
NumberOfBytesToRead,
TRUE,
&PtrBitmapBCB ) )
{
// Handle this
}
else
{
// Proceed
}

Any suggestions?
Manoj

Daniel Lovinger wrote: Could you tell us what the first 4 bytes of that “BCB” are?

Thanks.

dan

-----------------------------------
Manoj Paul Joseph,
Master of Computer Applications (final year student),
School of Computer Science and Engineering,
Anna University,
Chennai (Madras),
India.

---------------------------------
Download Yahoo! Score Tracker for live cricket scores on your desktop

Hi!
I forgot to add this.
!pool shows that Cc is holding the BCB at times. Sometimes it is someother process.
Sometimes
kd> !pool 0x8071D4A8 1
*8071d4a0 size: 40 previous size: 1a0 (Allocated) *Cc
8071d4a8 00000000 00003400 00000c00 00000000
8071d4b8 807cda08 807cd888 807cda88 00000000

Some other times

kd> !pool 0x8075B3C8
*8075b3c0 size: 40 previous size: a0 (Allocated) *Nbt2

Manoj

Daniel Lovinger wrote: Could you tell us what the first 4 bytes of that “BCB” are?

Thanks.

dan

-----------------------------------
Manoj Paul Joseph,
Master of Computer Applications (final year student),
School of Computer Science and Engineering,
Anna University,
Chennai (Madras),
India.

---------------------------------
Download Yahoo! Score Tracker for live cricket scores on your desktop

Manoj,

What THAT shows is the Cache Manager has FREED the BCB and it has been
allocated by something else (NBT perhaps?)

If you run under driver verifier (2K, XP, .NET) or at least enable special
pool (NT 4.0 SP4 or later) you will likely see the system catch this much
sooner, although still probably too late.

My guess is that you are tearing down the cache map and that this is causing
the subsequent problem.

Regards,

Tony

Tony Mason

Consulting Partner

OSR Open Systems Resources, Inc.

http: http://www.osr.com

Hope to see you at the next OSR file systems class October 7, 2002!

-----Original Message-----
From: Manoj Paul Joseph [mailto:xxxxx@yahoo.com]
Sent: Friday, April 12, 2002 1:42 AM
To: File Systems Developers
Subject: [ntfsd] RE: CcUnpinRepinnedBcb - More…

Hi!

I forgot to add this.

!pool shows that Cc is holding the BCB at times. Sometimes it is someother
process.
Sometimes
kd> !pool 0x8071D4A8 1
*8071d4a0 size: 40 previous size: 1a0 (Allocated) *Cc
8071d4a8 00000000 00003400 00000c00 00000000
8071d4b8 807cda08 807cd888 807cda88 00000000

Some other times

kd> !pool 0x8075B3C8
*8075b3c0 size: 40 previous size: a0 (Allocated) *Nbt2

Manoj

Daniel Lovinger wrote:

Could you tell us what the first 4 bytes of that “BCB” are?

Thanks.

dan

-----------------------------------
Manoj Paul Joseph,
Master of Computer Applications (final year student),
School of Computer Science and Engineering,
Anna University,
Chennai (Madras),
India.

_____

Download cricket http: Yahoo!
http: Score Tracker for live
cricket scores on your desktop — You are currently subscribed to ntfsd as:
xxxxx@osr.com To unsubscribe send a blank email to
%%email.unsub%%</http:></http:></http:>

Tony,
A newbie question. How do I enable the special pool?
Manoj
Tony Mason wrote: Manoj,

What THAT shows is the Cache Manager has FREED the BCB and it has been
allocated by something else (NBT perhaps?)

If you run under driver verifier (2K, XP, .NET) or at least enable special
pool (NT 4.0 SP4 or later) you will likely see the system catch this much
sooner, although still probably too late.

My guess is that you are tearing down the cache map and that this is causing
the subsequent problem.

Regards,

Tony

Tony Mason

Consulting Partner

OSR Open Systems Resources, Inc.

http://www.osr.com

Hope to see you at the next OSR file systems class October 7, 2002!

-----Original Message-----
From: Manoj Paul Joseph [mailto:xxxxx@yahoo.com]
Sent: Friday, April 12, 2002 1:42 AM
To: File Systems Developers
Subject: [ntfsd] RE: CcUnpinRepinnedBcb - More…

Hi!

I forgot to add this.

!pool shows that Cc is holding the BCB at times. Sometimes it is someother
process.
Sometimes
kd> !pool 0x8071D4A8 1
*8071d4a0 size: 40 previous size: 1a0 (Allocated) *Cc
8071d4a8 00000000 00003400 00000c00 00000000
8071d4b8 807cda08 807cd888 807cda88 00000000

Some other times

kd> !pool 0x8075B3C8
*8075b3c0 size: 40 previous size: a0 (Allocated) *Nbt2

Manoj

Daniel Lovinger wrote:

Could you tell us what the first 4 bytes of that “BCB” are?

Thanks.

dan

-----------------------------------
Manoj Paul Joseph,
Master of Computer Applications (final year student),
School of Computer Science and Engineering,
Anna University,
Chennai (Madras),
India.

_____

Download cricket Yahoo!
Score Tracker for live
cricket scores on your desktop — You are currently subscribed to ntfsd as:
xxxxx@osr.com To unsubscribe send a blank email to
%%email.unsub%%


You are currently subscribed to ntfsd as: xxxxx@yahoo.com
To unsubscribe send a blank email to %%email.unsub%%

-----------------------------------
Manoj Paul Joseph,
Master of Computer Applications (final year student),
School of Computer Science and Engineering,
Anna University,
Chennai (Madras),
India.

---------------------------------
Download Yahoo! Score Tracker for live cricket scores on your desktop

Microsoft KB Article # Q188831 describes this (see
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q188831)

Regards,

Tony

Tony Mason
Consulting Partner
OSR Open Systems Resources, Inc.
http://www.osr.com
?
Hope to see you at the next OSR file systems class October 7, 2002!
-----Original Message-----
From: Manoj Paul Joseph [mailto:xxxxx@yahoo.com]
Sent: Friday, April 12, 2002 12:41 PM
To: File Systems Developers
Subject: [ntfsd] RE: CcUnpinRepinnedBcb - More…

Tony,
? ??? A newbie question. How do I enable the special pool?
Manoj
? Tony Mason wrote:
Manoj,

What THAT shows is the Cache Manager has FREED the BCB and it has been
allocated by something else (NBT perhaps?)

If you run under driver verifier (2K, XP, .NET) or at least enable special
pool (NT 4.0 SP4 or later) you will likely see the system catch this much
sooner, although still probably too late.

My guess is that you are tearing down the cache map and that this is causing
the subsequent problem.

Regards,

Tony

Tony Mason

Consulting Partner

OSR Open Systems Resources, Inc.

http://www.osr.com

Hope to see you at the next OSR file systems class October 7, 2002!

-----Original Message-----
From: Manoj Paul Joseph [mailto:xxxxx@yahoo.com]
Sent: Friday, April 12, 2002 1:42 AM
To: File Systems Developers
Subject: [ntfsd] RE: CcUnpinRepinnedBcb - Mor Download Yahoo! Score Tracker
for live cricket scores on your desktop — You are currently subscribed to
ntfsd as: xxxxx@osr.com To unsubscribe send a blank email to
%%email.unsub%%

Hi Tony, Dan,
I still have the faulty BCB problem. I try to do a CcGetFileObjectFromBcb on the BCB I get and it fails. The buffer contains valid data though.
The File Object is created by my FSD to represent the Volume. I must be getting something wrong.
This is the first 64 bytes of the BCB. After the first 8 bytes, it is all zeros. CcGetFileObjectFromBcb is looking for the File Object somewhere down below (0x44 ?) I guess.
807dc311 00 cc c1 08 b0 7c 80 01 00 00 00 00 00 00 00 00
807dc321 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
807dc331 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
807dc341 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
!pool also fails.
kd> !pool 0x807DC311
*807dc000 size: 1820 previous size: 0 (Allocated) Process: 807d5748
Bad allocation size @807dc000, too large
This is the Access violation I generate.
Access violation - code c0000005 (!!! second chance !!!)
nt!CcGetFileObjectFromBcb+7:
801065c3 8b4144 mov eax,[ecx+0x44]
Any suggestions anybody?
I am giving the (edited) code I use to initialize the File Object.
The Volume Control Block (VCB) has the following fields
FSRTL_COMMON_FCB_HEADER CommonVCBHeader;
SECTION_OBJECT_POINTERS SectionObject;
PFILE_OBJECT PtrStreamFileObject;
ERESOURCE VCBResource;
ERESOURCE PagingIoResource;
InitializeVCB()
{
PtrVCB = (PtrExt2VCB)(PtrVolumeDeviceObject->DeviceExtension);
RtlZeroMemory(PtrVCB, sizeof(Ext2VCB));
ExInitializeResourceLite(&(PtrVCB->VCBResource));
ExInitializeResourceLite(&(PtrVCB->PagingIoResource));
PtrVCB->CommonVCBHeader.AllocationSize.QuadPart = VolumeSize;
PtrVCB->CommonVCBHeader.FileSize.QuadPart = VolumeSize;
PtrVCB->CommonVCBHeader.ValidDataLength.LowPart = 0xFFFFFFFF;
PtrVCB->CommonVCBHeader.ValidDataLength.HighPart = 0x7FFFFFFF;
PtrVCB->CommonVCBHeader.IsFastIoPossible = FastIoIsNotPossible;
PtrVCB->CommonVCBHeader.Resource = &(PtrVCB->VCBResource);
PtrVCB->CommonVCBHeader.PagingIoResource = &(PtrVCB->PagingIoResource);;
PtrVCB->PtrStreamFileObject = IoCreateStreamFileObject(NULL, PtrVCB->PtrVPB->RealDevice);
PtrVCB->PtrStreamFileObject->FsContext = (void *)(&PtrVCB->CommonVCBHeader);
PtrVCB->PtrStreamFileObject->FsContext2 = NULL;
PtrVCB->PtrStreamFileObject->SectionObjectPointer = &(PtrVCB->SectionObject);
CcInitializeCacheMap(PtrVCB->PtrStreamFileObject,
(PCC_FILE_SIZES)(&(PtrVCB->CommonVCBHeader.AllocationSize)),
TRUE, &(Ext2GlobalData.CacheMgrCallBacks), PtrVCB );
if (CcMapData( PtrVCB->PtrStreamFileObject,
&VolumeByteOffset,
NumberOfBytesToRead,
TRUE,
&PtrBCB,
&PtrCacheBuffer ))
{
CcGetFileObjectFromBcb ( PtrBCB );
}
}

Daniel Lovinger wrote:
Could you tell us what the first 4 bytes of that “BCB” are?

Thanks.

dan


This posting is provided “AS IS” with no warranties, and
confers no rights.

-----Original Message-----
From: Manoj Paul Joseph [mailto:xxxxx@yahoo.com]
Sent: Thursday, April 11, 2002 5:11 AM
To: File Systems Developers
Subject: [ntfsd] CcUnpinRepinnedBcb - More…

Hi!
Thanks Tony! Thanks Dan! I really appreciate your help.
I think I am beginning to figure out were I am going wrong. What I am trying to do it create folders in my volume. My routines are not very optimised and map and pin data at will.
The assertion occurs when I try to pin a 0x3400 byte range and then subsequently do a CcUnpinRepinnedBcb. I am not actually using the whole range. So if I limit myself to just 0x400 bytes, the routine goes off fine.
But I still get into trouble when I create another folder. I might be ‘forgetting’ to unpin a BCB somewhere…
But I still don’t understand how pinning a large range could cause trouble. I do pin the data successfully. I also am not uninitialising the cache prematurely. The file object is the the volume stream file object and I don’t uninitialize its cache till system shutdown.
Any ideas / suggestions.
Thanks for your time!
Manoj


You are currently subscribed to ntfsd as: xxxxx@yahoo.com
To unsubscribe send a blank email to %%email.unsub%%

-----------------------------------
Manoj Paul Joseph,
Master of Computer Applications (final year student),
School of Computer Science and Engineering,
Anna University,
Chennai (Madras),
India.

---------------------------------
Download Yahoo! Score Tracker for live cricket scores on your desktop