C++ support lib for kernel?

(quite) some time ago, I have used NuMega DriverWorks for a driver
that required C++ support. The main reason I needed DW is support for
new and delete.
Is there any C++ library for kernel mode today for more than
“super-C”, that works in both x86 and x64? I believe the driver won’t
require anything fancier than new/delete over what the WDK provides, but
since templates are used, I am not sure. The new/delete is the only
thing preventing a successful link, and yes I know that doesn’t mean the
code would run after.

Remembering how the code handled a possible new failure will be a
big task as there is no SEH support :slight_smile:


Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
http://www.alfasp.com
File system audit, security and encryption kits.

You might take a look at Hollistech.com. Mark has, or had, a C++ support lib there.

Gary G. Little

----- Original Message -----
From: “Dejan Maksimovic”
To: “Windows System Software Devs Interest List”
Sent: Thursday, May 19, 2011 10:22:29 AM
Subject: [ntdev] C++ support lib for kernel?

(quite) some time ago, I have used NuMega DriverWorks for a driver
that required C++ support. The main reason I needed DW is support for
new and delete.
Is there any C++ library for kernel mode today for more than
“super-C”, that works in both x86 and x64? I believe the driver won’t
require anything fancier than new/delete over what the WDK provides, but
since templates are used, I am not sure. The new/delete is the only
thing preventing a successful link, and yes I know that doesn’t mean the
code would run after.

Remembering how the code handled a possible new failure will be a
big task as there is no SEH support :slight_smile:


Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
http://www.alfasp.com
File system audit, security and encryption kits.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

Not that I’m aware of.

Are you saying that you need support for C++ EH (not SEH, which is
supported)? If so, just for new/delete?

mm

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Dejan Maksimovic
Sent: Thursday, May 19, 2011 11:22 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] C++ support lib for kernel?

(quite) some time ago, I have used NuMega DriverWorks for a driver
that required C++ support. The main reason I needed DW is support for
new and delete.
Is there any C++ library for kernel mode today for more than
“super-C”, that works in both x86 and x64? I believe the driver won’t
require anything fancier than new/delete over what the WDK provides, but
since templates are used, I am not sure. The new/delete is the only
thing preventing a successful link, and yes I know that doesn’t mean the
code would run after.

Remembering how the code handled a possible new failure will be a
big task as there is no SEH support :slight_smile:


Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
http://www.alfasp.com
File system audit, security and encryption kits.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

Forgot - if all you need is new/delete WITHOUT C++ EH and template support,
then all you have to do is write your own new/delete (trivial) and not page
anything.

More than that (other than global object support, which is pretty
straightforward too), different story.

mm

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Dejan Maksimovic
Sent: Thursday, May 19, 2011 11:22 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] C++ support lib for kernel?

(quite) some time ago, I have used NuMega DriverWorks for a driver
that required C++ support. The main reason I needed DW is support for
new and delete.
Is there any C++ library for kernel mode today for more than
“super-C”, that works in both x86 and x64? I believe the driver won’t
require anything fancier than new/delete over what the WDK provides, but
since templates are used, I am not sure. The new/delete is the only
thing preventing a successful link, and yes I know that doesn’t mean the
code would run after.

Remembering how the code handled a possible new failure will be a
big task as there is no SEH support :slight_smile:


Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
http://www.alfasp.com
File system audit, security and encryption kits.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

Quite outdated :frowning:

“Gary G. Little” wrote:

You might take a look at Hollistech.com. Mark has, or had, a C++
support lib there.


Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
http://www.alfasp.com
File system audit, security and encryption kits.

IIRC, just new and delete will suffice. I can compile the driver with Mark’s Hollistech lib but with some linker
error that I am not sure should be left alone (code section merging), so no more is needed. And C++ EH is not used,
my mistake.

Martin O’Brien wrote:

Not that I’m aware of.

Are you saying that you need support for C++ EH (not SEH, which is
supported)? If so, just for new/delete?

mm

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Dejan Maksimovic
Sent: Thursday, May 19, 2011 11:22 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] C++ support lib for kernel?

(quite) some time ago, I have used NuMega DriverWorks for a driver
that required C++ support. The main reason I needed DW is support for
new and delete.
Is there any C++ library for kernel mode today for more than
“super-C”, that works in both x86 and x64? I believe the driver won’t
require anything fancier than new/delete over what the WDK provides, but
since templates are used, I am not sure. The new/delete is the only
thing preventing a successful link, and yes I know that doesn’t mean the
code would run after.

Remembering how the code handled a possible new failure will be a
big task as there is no SEH support :slight_smile:


Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
http://www.alfasp.com
File system audit, security and encryption kits.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer


Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
http://www.alfasp.com
File system audit, security and encryption kits.

> Forgot - if all you need is new/delete WITHOUT C++ EH and template support, then all you have to do is write your

own new/delete (trivial) and not page anything.

Templates are used in the code, but I did not see anything missing on the linking side after using
Hollistech lib.

More than that (other than global object support, which is pretty straightforward too), different story.

Pardon this old C guy - what is global object support?:slight_smile: There are objects that would be returned by APIs as
pointers and used in subsequent API calls. The APIs are the only ones that create and destroy objects.


Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
http://www.alfasp.com
File system audit, security and encryption kits.

Search this list for the changes required to eliminate the linker
error. But as noted above, new/delete are trivial to implement. My
library provides the global ctor support required if you foolishly
decided that you needed global objects.

Mark Roddy

On Thu, May 19, 2011 at 12:12 PM, Dejan Maksimovic wrote:
>
> ? ?IIRC, just new and delete will suffice. I can compile the driver with Mark’s Hollistech lib but with some linker
> error that I am not sure should be left alone (code section merging), so no more is needed. And C++ EH is not used,
> my mistake.
>
> Martin O’Brien wrote:
>
>> Not that I’m aware of.
>>
>> Are you saying that you need support for C++ EH (not SEH, which is
>> supported)? ?If so, just for new/delete?
>>
>> mm
>>
>> -----Original Message-----
>> From: xxxxx@lists.osr.com
>> [mailto:xxxxx@lists.osr.com] On Behalf Of Dejan Maksimovic
>> Sent: Thursday, May 19, 2011 11:22 AM
>> To: Windows System Software Devs Interest List
>> Subject: [ntdev] C++ support lib for kernel?
>>
>> ? ? (quite) some time ago, I have used NuMega DriverWorks for a driver
>> that required C++ support. The main reason I needed DW is support for
>> new and delete.
>> ? ? Is there any C++ library for kernel mode today for more than
>> “super-C”, that works in both x86 and x64? I believe the driver won’t
>> require anything fancier than new/delete over what the WDK provides, but
>> since templates are used, I am not sure. The new/delete is the only
>> thing preventing a successful link, and yes I know that doesn’t mean the
>> code would run after.
>>
>> ? ? Remembering how the code handled a possible new failure will be a
>> big task as there is no SEH support :slight_smile:
>>
>> –
>> Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
>> http://www.alfasp.com
>> File system audit, security and encryption kits.
>>
>> —
>> NTDEV is sponsored by OSR
>>
>> For our schedule of WDF, WDM, debugging and other seminars visit:
>> http://www.osr.com/seminars
>>
>> To unsubscribe, visit the List Server section of OSR Online at
>> http://www.osronline.com/page.cfm?name=ListServer
>>
>> —
>> NTDEV is sponsored by OSR
>>
>> For our schedule of WDF, WDM, debugging and other seminars visit:
>> http://www.osr.com/seminars
>>
>> To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
>
> –
> Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
> http://www.alfasp.com
> File system audit, security and encryption kits.
>
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
>

Something like:

Class Whatever
{
}

Whatever g_Whatever;

DriverEntry(…)
{
}

mm

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Dejan Maksimovic
Sent: Thursday, May 19, 2011 12:19 PM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] C++ support lib for kernel?

Forgot - if all you need is new/delete WITHOUT C++ EH and template
support, then all you have to do is write your
own new/delete (trivial) and not page anything.

Templates are used in the code, but I did not see anything missing
on the linking side after using
Hollistech lib.

More than that (other than global object support, which is pretty
straightforward too), different story.

Pardon this old C guy - what is global object support?:slight_smile: There are
objects that would be returned by APIs as
pointers and used in subsequent API calls. The APIs are the only ones that
create and destroy objects.


Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
http://www.alfasp.com
File system audit, security and encryption kits.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

Something about .CRT and .TEXT getting merged?

mm

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Dejan Maksimovic
Sent: Thursday, May 19, 2011 12:12 PM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] C++ support lib for kernel?

IIRC, just new and delete will suffice. I can compile the driver with
Mark’s Hollistech lib but with some linker
error that I am not sure should be left alone (code section merging), so no
more is needed. And C++ EH is not used,
my mistake.

Martin O’Brien wrote:

Not that I’m aware of.

Are you saying that you need support for C++ EH (not SEH, which is
supported)? If so, just for new/delete?

mm

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Dejan Maksimovic
Sent: Thursday, May 19, 2011 11:22 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] C++ support lib for kernel?

(quite) some time ago, I have used NuMega DriverWorks for a driver
that required C++ support. The main reason I needed DW is support for
new and delete.
Is there any C++ library for kernel mode today for more than
“super-C”, that works in both x86 and x64? I believe the driver won’t
require anything fancier than new/delete over what the WDK provides, but
since templates are used, I am not sure. The new/delete is the only
thing preventing a successful link, and yes I know that doesn’t mean the
code would run after.

Remembering how the code handled a possible new failure will be a
big task as there is no SEH support :slight_smile:


Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
http://www.alfasp.com
File system audit, security and encryption kits.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
http://www.alfasp.com
File system audit, security and encryption kits.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

Dejan Maksimovic wrote:

(quite) some time ago, I have used NuMega DriverWorks for a driver
that required C++ support. The main reason I needed DW is support for
new and delete.
Is there any C++ library for kernel mode today for more than
“super-C”, that works in both x86 and x64? I believe the driver won’t
require anything fancier than new/delete over what the WDK provides, but
since templates are used, I am not sure. The new/delete is the only
thing preventing a successful link, and yes I know that doesn’t mean the
code would run after.

Seriously? Have you never used “grep” or “findstr”? There are
definitions for operator new and operator delete in the WDK include file
<kcom.h> that redirect to ExAllocatePool. I don’t usually need the rest
of the file, so I just cut and paste the definitions into my own include
file.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.</kcom.h>

Yep. And I am not using such global objects, all allocations are from inside APIs calls.

Martin O’Brien wrote:

Something about .CRT and .TEXT getting merged?

mm

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Dejan Maksimovic
Sent: Thursday, May 19, 2011 12:12 PM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] C++ support lib for kernel?

IIRC, just new and delete will suffice. I can compile the driver with
Mark’s Hollistech lib but with some linker
error that I am not sure should be left alone (code section merging), so no
more is needed. And C++ EH is not used,
my mistake.

Martin O’Brien wrote:

> Not that I’m aware of.
>
> Are you saying that you need support for C++ EH (not SEH, which is
> supported)? If so, just for new/delete?
>
> mm
>
> -----Original Message-----
> From: xxxxx@lists.osr.com
> [mailto:xxxxx@lists.osr.com] On Behalf Of Dejan Maksimovic
> Sent: Thursday, May 19, 2011 11:22 AM
> To: Windows System Software Devs Interest List
> Subject: [ntdev] C++ support lib for kernel?
>
> (quite) some time ago, I have used NuMega DriverWorks for a driver
> that required C++ support. The main reason I needed DW is support for
> new and delete.
> Is there any C++ library for kernel mode today for more than
> “super-C”, that works in both x86 and x64? I believe the driver won’t
> require anything fancier than new/delete over what the WDK provides, but
> since templates are used, I am not sure. The new/delete is the only
> thing preventing a successful link, and yes I know that doesn’t mean the
> code would run after.
>
> Remembering how the code handled a possible new failure will be a
> big task as there is no SEH support :slight_smile:
>
> –
> Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
> http://www.alfasp.com
> File system audit, security and encryption kits.
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
http://www.alfasp.com
File system audit, security and encryption kits.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer


Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
http://www.alfasp.com
File system audit, security and encryption kits.

I never figured to do a search for “new” or “delete” as it would (and it did in a test) return so many results.
You mean declaring new and delete in my code is all I might need? That would be awesome. Compilation does work
fine with HtsCpp lib, I am just not sure if that is enough.
(yes the driver works, but getting driver verifier to inject allocation faults when I want it for testing isn’t
working :))

Tim Roberts wrote:

Dejan Maksimovic wrote:
> (quite) some time ago, I have used NuMega DriverWorks for a driver
> that required C++ support. The main reason I needed DW is support for
> new and delete.
> Is there any C++ library for kernel mode today for more than
> “super-C”, that works in both x86 and x64? I believe the driver won’t
> require anything fancier than new/delete over what the WDK provides, but
> since templates are used, I am not sure. The new/delete is the only
> thing preventing a successful link, and yes I know that doesn’t mean the
> code would run after.

Seriously? Have you never used “grep” or “findstr”? There are
definitions for operator new and operator delete in the WDK include file
<kcom.h> that redirect to ExAllocatePool. I don’t usually need the rest
> of the file, so I just cut and paste the definitions into my own include
> file.
>
> –
> Tim Roberts, xxxxx@probo.com
> Providenza & Boekelheide, Inc.
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer


Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
http://www.alfasp.com
File system audit, security and encryption kits.</kcom.h>

Dejan Maksimovic wrote:

I never figured to do a search for “new” or “delete” as it would (and it did in a test) return so many results.

Ah – that’s a good point. OK, I withdraw my sarcasm.

You mean declaring new and delete in my code is all I might need? That would be awesome. Compilation does work fine with HtsCpp lib, I am just not sure if that is enough.

That’s all it takes. “operator new” and “operator delete” have no
special meaning – they are just normal functions with funny decorated
names. As long as you provide your own implementations, they will be
satisfied locally, and it won’t go looking in a library.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

> That’s all it takes. “operator new” and “operator delete” have no

special meaning – they are just normal functions with funny decorated
names. As long as you provide your own implementations, they will be
satisfied locally, and it won’t go looking in a library.

I noticed there are throwing and non-throwing new/delete (non-throwing is definitely the one I want), so I figured there could be other similar examples where I need to be
sure. (but since I don’t use C++ EH, there probably aren’t)


Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
http://www.alfasp.com
File system audit, security and encryption kits.

Dejan Maksimovic wrote:

I noticed there are throwing and non-throwing new/delete (non-throwing is definitely the one I want), so I figured there could be other similar examples where I need to be sure. (but since I don’t use C++ EH, there probably aren’t)

Right – you can’t use C++ EH in the kernel, for all reasonable values
of the word “can’t”.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

For an alternate approach you can try adding the following class as a
base class for the objects that you want to allocate using new or delete:

template<pool_type _pool ulong tag>
class NewAllocatorImpl
{
public:
enum {
allocator_pool_type
= _Pool,
};

PVOID __cdecl operator new(size_t nSize)
{
if(PVOID result = ::ExAllocatePoolWithTag(_Pool,nSize,_TAG))
{
::RtlZeroMemory(result,nSize);
return result;
}

return NULL;
}
void__cdecl operator delete(PVOID pVoid)
{
::ExFreePoolWithTag(pVoid, _TAG);
}
};

Place this code within the namespace of your choice.

On 5/19/2011 12:40 PM, Martin O’Brien wrote:
> Something about .CRT and .TEXT getting merged?
>

No, not that!

#ifdef _WIN64
#pragma section(“.CRT$XCA”, read)
#endif

#pragma data_seg(“.CRT$XCA”)
PVFV __crtXca = { NULL };

#ifdef _WIN64
#pragma section(“.CRT$XCZ”, read)
#endif

#pragma data_seg(“.CRT$XCZ”)
PVFV__crtXcz = { NULL };

#pragma data_seg()

// now merge all .CRT into proper data section
//
// Note: .CRT section now is read only.
// see http://msdn.microsoft.com/en-us/library/ms235500(v=VS.100).aspx.

#pragma comment(linker, “/merge:.CRT=.rdata”)</pool_type>

Why is this required, BTW?

#ifdef _WIN64
#pragma section(“.CRT$XCA”, read)
#endif

#pragma data_seg(“.CRT$XCA”)
PVFV __crtXca = { NULL };

#ifdef _WIN64
#pragma section(“.CRT$XCZ”, read)
#endif

#pragma data_seg(“.CRT$XCZ”)
PVFV __crtXcz = { NULL };

#pragma data_seg()

// now merge all .CRT into proper data section
//
// Note: .CRT section now is read only.
// see http://msdn.microsoft.com/en-us/library/ms235500(v=VS.100).aspx.

#pragma comment(linker, “/merge:.CRT=.rdata”)


Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
http://www.alfasp.com
File system audit, security and encryption kits.

On 5/19/2011 2:20 PM, Dejan Maksimovic wrote:
>
> Why is this required, BTW?
>
>

To resolve a linker error.

These are (some of) the names of the sections that msvc expects to exist to
support global object construction/destruction.

The linker merges all sections that have the same name up to the ‘$’ into
one section:

‘.CRT$XCA’
‘.CRT$XCZ’

-> ‘.CRT’

All of these can be found in the source code for the crt that comes with
MSVC.

What he’s doing below is explicitly declaring the contributing sections as
readonly so that when merged with ‘.text’, the attributes match, so you
don’t get that linker warning.

mm

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Dejan Maksimovic
Sent: Thursday, May 19, 2011 2:20 PM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] C++ support lib for kernel?

Why is this required, BTW?

#ifdef _WIN64
#pragma section(“.CRT$XCA”, read)
#endif

#pragma data_seg(“.CRT$XCA”)
PVFV __crtXca = { NULL };

#ifdef _WIN64
#pragma section(“.CRT$XCZ”, read)
#endif

#pragma data_seg(“.CRT$XCZ”)
PVFV __crtXcz = { NULL };

#pragma data_seg()

// now merge all .CRT into proper data section
//
// Note: .CRT section now is read only.
// see http://msdn.microsoft.com/en-us/library/ms235500(v=VS.100).aspx.

#pragma comment(linker, “/merge:.CRT=.rdata”)


Kind regards, Dejan (MSN support: xxxxx@alfasp.com)
http://www.alfasp.com
File system audit, security and encryption kits.


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer