From: Zbynek on
Description of driver:
Our software encrypts our virtual discs and hard disk partitions too. Both
run over our driver - which is something like filter driver, because it uses
ntfs and fat drivers to makes real operations on this discs. In this driver
we take a block from the disk (ask to ntfs/fat driver), decrypt, make changes
etc... And of course attach and detach disk to system (find letter etc...).
Creating of virtual discs (real file in filesystem) is made by our client
application - not by the driver.
The driver must be sign to run on 64bit OS, we sign it by older certificate,
but it run in test mode of OS. Other our drivers run in this mode properly
(the same situation of compilling, signing etc).

Situation is:
- We have this proplem with our virtual disc as well with full partition.
And it's the same on Win 7 64bit and on Win Wista 64bit too (and work on
32bit: 2000, XP, Vista, Seven)
- We can build the driver (and the client application). We have several
drivers (but less complicated then this) which run properly.

build command (not debug):
setenv.bat <path_ddk> fre x64 WNET
nmake or nmake -f Makefile64 Release=1

some settings of our makefile:
OS = wnet
ARCH = AMD64
INCARCH = AMD64
CC = cl
ASM = ml64
LINK = link

- We think our client application run properly (it does many other things
well). Virtual disc created by it run then on 32bit. And it can load settings
(header) from discs from 32bit OS on 64bit OS.
- We can start/stop this driver, communicate with it, create letter to new
disc in system (but not open this disc), test other partition (if exist) in
this driver (by calling open on them) - this works properly
- it looks like we can connect our disc to system properly (without error
code), system calls our driver if it wants some metadata or read/write... Our
metadata (stored in driver, not on disc) we return properly (disk length,
geometry etc.).
- but we can't format our disc, can't explore volume (open from explorer
etc.)

The critical data types (like in device extension - "integer" etc.) have
specified size (like ULONG32, __int64).

Do you seen anywhere any mistakes? Or have you any ideas or questions?
We think may be there are some bad settings in compilling or pointer/size of
type error or differences in the ntfs/fat disc drivers (attaching to them).
But they are only the ideas - they can be dead wrong :(

Thank you very much for your ideas
Zbynek
(developer of Cosect s.r.o.)
From: Aram Hăvărneanu on
Use build.exe with sources file, not custom Makefiles. Documentation in the
WDK docs.

--
Aram Hăvărneanu