I was also wondering, when I have trapped an event and gotten the fileobject,
how can I determine who is opening it? Is there any way to tell if the opener
is on the local machine or coming over the network?
Any help or ideas greatly appreciated.
Ismo Bergroth
Bottom line, memory being trashed by someone (perhaps by your
driver 8^).
------------------------------------------------------------------
Son VoBa (206) 865-8758
Digital Equipment Corporation FAX (206) 865-8890
Computer Systems Division 14475 NE 24th Street
Windows NT Business Segment Bellevue, Washington 98007-3739
DECwest Engineering U.S.A.
------------------------------------------------------------------
A given IRP can access a predetermined number of stack locations. Whether
these locations are physically in the IRP is not important. As requests
trickle down to lower level drivers, different stack locations are used.
If you run out of stack locations without reaching the lowest level driver,
NT is not happy.
How does your filter driver attach itself? Do you use
IoGetDeviceObjectPointer or IoAttachDevice? Are you allocating IRPs
yourself?
(1) you've exceeded the number of IRP stack locations SRV allocates (4
by default). You can fix this in the Registry - the key is documented
in the resource kit (I never recall from the top of my head.)
(2) You've copied the contents of one stack location to the next stack
location (RtlMoveMemory/RtlCopyMemory.) In this case it is likely you
aren't setting the completion routine properly and it is copied
inadvertently. You MUST set the IoCompletion routine - even if just to
zero - if you copy one stack location to the next.
--
Tony Mason
Consulting Partner
OSR Open Systems Resources, Inc.
VOICE: (603) 595-6500 FAX: (603) 595-6503
ma...@osr.com
OSR is a consulting firm specializing in training,
design, and development of systems software for Windows NT. Our 1996 public training schedule is now available (training for: kernel mode drivers, NDIS drivers, and file systems drivers.) Call for information.