Hi:
How can I know if I should put a function
in pageable or non-pageable section?
Thanks a bunch!
Paul
Hi:
How can I know if I should put a function
in pageable or non-pageable section?
Thanks a bunch!
Paul
All the code that is supposed to be called at IRQL > APC_LEVEL is not
allowed to be pageable, with other words your Dispatch Routines , DPC
Routines, ISR …, Completion Routines etc. and other functions called by
these Routines . All these cannot be pageable.
You can mark your DriverEntry and DriverUnload Routine (If there is one) and
any other functions you exclusively just call through these routines
pageable with no worries, because they are called in context of a System
Thread at IRQL==PASSIVE_LEVEL
Johnny
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Paul
Sent: Mittwoch, 1. Mai 2002 12:02
To: NT Developers Interest List
Subject: [ntdev] Whether to put a function into pageable section or not?
Hi:
How can I know if I should put a function
in pageable or non-pageable section?
Thanks a bunch!
Paul
b®¶¹®vµj†…n†y:.žË›±Êâm?Ö›•©äzf¢–?y«Þž×^¿9ðyb²Û(²·(
Well actually your dispatch routines may or may not be executing at < DISPATCH_LEVEL (bad choice of terminology by m’soft,) depending on the specific dispatch function and the specific stack (as in who is doing what above you.) Your DriverEntry routine is DISCARDABLE: it can be deleted after it has been called as it is run once.
However, the last thing I am going to do to any driver I write is worry about how I can reduce its memory footprint by making sections pageable. This is not going to help my driver at all, either in performance or reliability.
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Johnny
Sent: Wednesday, May 01, 2002 8:08 AM
To: NT Developers Interest List
Subject: [ntdev] RE: Whether to put a function into pageable section or not?
All the code that is supposed to be called at IRQL > APC_LEVEL is not allowed to be pageable, with other words your Dispatch Routines , DPC Routines, ISR …, Completion Routines etc. and other functions called by these Routines . All these cannot be pageable.
You can mark your DriverEntry and DriverUnload Routine (If there is one) and any other functions you exclusively just call through these routines pageable with no worries, because they are called in context of a System Thread at IRQL==PASSIVE_LEVEL
Johnny
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com]On Behalf Of Paul
Sent: Mittwoch, 1. Mai 2002 12:02
To: NT Developers Interest List
Subject: [ntdev] Whether to put a function into pageable section or not?
Hi:
How can I know if I should put a function
in pageable or non-pageable section?
Thanks a bunch!
Paul
b豆畍礿唴n唝:.炈洷殊m?澲洉╀zf?y炞^繚9饄b槽(卜(
You are currently subscribed to ntdev as: xxxxx@hollistech.com
To unsubscribe send a blank email to %%email.unsub%%
MessageThat’s right…
it would event save you alot of time searching for the reason why your driver causes a BSOD!!! just imagine: you forget that your function is in pageable mem and you try to acquire a spin lock!!! the pages that contain your code are paged out into paging file, so BANG===>BSOD. Even the Paged pool is a limited system resource, it is one of the less important points you should worry about when you write a driver.
Johnny
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com]On Behalf Of Mark Roddy
Sent: Mittwoch, 1. Mai 2002 14:38
To: NT Developers Interest List
Subject: [ntdev] RE: Whether to put a function into pageable section or not?
Well actually your dispatch routines may or may not be executing at < DISPATCH_LEVEL (bad choice of terminology by m’soft,) depending on the specific dispatch function and the specific stack (as in who is doing what above you.) Your DriverEntry routine is DISCARDABLE: it can be deleted after it has been called as it is run once.
However, the last thing I am going to do to any driver I write is worry about how I can reduce its memory footprint by making sections pageable. This is not going to help my driver at all, either in performance or reliability.
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Johnny
Sent: Wednesday, May 01, 2002 8:08 AM
To: NT Developers Interest List
Subject: [ntdev] RE: Whether to put a function into pageable section or not?
All the code that is supposed to be called at IRQL > APC_LEVEL is not allowed to be pageable, with other words your Dispatch Routines , DPC Routines, ISR …, Completion Routines etc. and other functions called by these Routines . All these cannot be pageable.
You can mark your DriverEntry and DriverUnload Routine (If there is one) and any other functions you exclusively just call through these routines pageable with no worries, because they are called in context of a System Thread at IRQL==PASSIVE_LEVEL
Johnny
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com]On Behalf Of Paul
Sent: Mittwoch, 1. Mai 2002 12:02
To: NT Developers Interest List
Subject: [ntdev] Whether to put a function into pageable section or not?
Hi:
How can I know if I should put a function
in pageable or non-pageable section?
Thanks a bunch!
Paul
You are currently subscribed to ntdev as: xxxxx@yahoo.de
To unsubscribe send a blank email to %%email.unsub%%
The functions which never run on DISPATCH_LEVEL (which also means - not using any spinlocks) can be paged.
The data which is never accessed from DISPATCH_LEVEL (which also means - not touched while any spinlock is held) - can be paged.
Another limitation is that the FSD’s and FSF’s read/write paths dealing with a paging file must not be paged. For FSF, this usually mean - no read/write paths at all can be paged.
Max
----- Original Message -----
From: Paul
To: NT Developers Interest List
Sent: Wednesday, May 01, 2002 2:01 PM
Subject: [ntdev] Whether to put a function into pageable section or not?
Hi:
How can I know if I should put a function
in pageable or non-pageable section?
Thanks a bunch!
Paul
b???v?jƶ?i?d??{.n???zwZnV??隊[h???z{]z?x?yb??(??(