Patches from Drigus, adds new wince units. bug and bug

git-svn-id: trunk@15912 -
This commit is contained in:
sekelsenmat 2010-08-27 14:31:13 +00:00
parent c03fa8e79d
commit ef35ef0b0d
4 changed files with 308 additions and 3 deletions

2
.gitattributes vendored
View File

@ -5835,6 +5835,7 @@ packages/winceunits/src/oleauto.pp svneol=native#text/plain
packages/winceunits/src/phone.pp svneol=native#text/plain
packages/winceunits/src/pimstore.pp svneol=native#text/plain
packages/winceunits/src/pm.pp svneol=native#text/plain
packages/winceunits/src/pnp.pas svneol=native#text/plain
packages/winceunits/src/power.pp svneol=native#text/plain
packages/winceunits/src/projects.pp svneol=native#text/plain
packages/winceunits/src/rapi.pp svneol=native#text/plain
@ -5848,6 +5849,7 @@ packages/winceunits/src/simmgr.pp svneol=native#text/plain
packages/winceunits/src/sip.pp svneol=native#text/plain
packages/winceunits/src/sipapi.pp svneol=native#text/plain
packages/winceunits/src/sms.pp svneol=native#text/plain
packages/winceunits/src/storemgr.pas svneol=native#text/plain
packages/winceunits/src/tapi.pp svneol=native#text/plain
packages/winceunits/src/todaycmn.pp svneol=native#text/plain
packages/winceunits/src/tsp.pp svneol=native#text/plain

View File

@ -21,11 +21,12 @@ unit buildwinceunits;
interface
uses
aygshell,commctrl,commdlg,iphlpapi,notify,oleauto,power,shellapi,simmgr,tapi,
gpsapi,todaycmn,windbase,cesync,gx,winioctl,msgqueue,pm,service,htmlctrl,
aygshell, commctrl, commdlg, iphlpapi, notify, oleauto, power, shellapi, simmgr, tapi,
gpsapi, todaycmn, windbase, cesync, gx, winioctl, msgqueue, pm, service, htmlctrl,
sipapi, cpl, bt_api, bt_sdp, bthapi, bthutil, pimstore, ril, sms, ws2bth,
keybd, nled, phone, connmgr, devload, devmgmt, mmreg, mmsystem, msacm,
wininet, ras, raserror, sip, projects, wap, tsp, extapi, imm, rapitypes;
wininet, ras, raserror, sip, projects, wap, tsp, extapi, imm, rapitypes,
storemgr, pnp;
implementation

View File

@ -0,0 +1,56 @@
unit PnP;
{$mode objfpc}
(*
(pnp.h)
*)
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
// --------------------------------------------------------------------------
interface
uses
Windows;
const
// Maximum size of a device interface name. The choice of value is arbitrary
// but necessary for componenents that want to browse available interfaces
// so that they can set up their message queues. This value does not include
// the (required) terminating zero - that's already counted in DEVDETAIL.
MAX_DEVCLASS_NAMELEN = 64;
// Indicates an ordinary "stream" interface: open/read/write/iocontrol/close.
// Devices that do not specify anything else and which expose a "ABCN:"
// type of name automatically generate a notification with this GUID and
// and a name equal to the device name (e.g., "FOO2:").
DEVCLASS_STREAM_STRING = '{f8a6ba98-087a-43ac-a9d8-b7f13c5bae31}';
DEVCLASS_STREAM_GUID: GUID = '{f8a6ba98-087a-43ac-a9d8-b7f13c5bae31}';
type
DEVDETAIL = record
guidDevClass: GUID; // the device interface id for this notification
dwReserved: DWORD; // do not use this
fAttached: BOOL; // true if the di is present, false otherwise
cbName: LongInt; // byte count of the interface's name
szName: TCHAR; // beginning of the interface's name
end;
TDEVDETAIL = DEVDETAIL;
PDEVDETAIL = ^DEVDETAIL;
implementation
end.

View File

@ -0,0 +1,246 @@
unit StoreMgr;
{$PACKSET 1}
{$mode objfpc}
(*
Store Manager API
(storemgr.h)
*)
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
interface
uses
Windows;
const
BLOCK_DRIVER_GUID: GUID = '{A4E7EDDA-E575-4252-9D6B-4195D48BB865}';
STORE_MOUNT_GUID: GUID = '{C1115848-46FD-4976-BDE9-D79448457004}';
FATFS_MOUNT_GUID: GUID = '{169E1941-04CE-4690-97AC-776187EB67CC}';
CDFS_MOUNT_GUID: GUID = '{72D75746-D54A-4487-B7A1-940C9A3F259A}';
UDFS_MOUNT_GUID: GUID = '{462FEDA9-D478-4b00-86BB-51A8E3D10890}';
CDDA_MOUNT_GUID: GUID = '{BA6B1343-7980-4d0c-9290-762D527B33AB}';
FSD_MOUNT_GUID: GUID = '{8C77EDE8-47B9-45ae-8BC9-86E7B8D00EDD}';
BOOTFS_MOUNT_GUID: GUID = '{9A1E75E9-B24A-4838-B448-C026CA01323C}';
ROOTFS_MOUNT_GUID: GUID = '{0473DD50-D4CA-4ae2-BF5C-F09FD611C1CF}';
ROMFS_MOUNT_GUID: GUID = '{945E7231-17C0-4753-AD4E-BEFCA2FA6AE2}';
STORAGE_MEDIA_GUID: GUID = '{54CA35ED-CAF3-4b34-BC6B-6DFC7F22E6A9}';
BLOCK_DRIVER_GUID_STRING = '{A4E7EDDA-E575-4252-9D6B-4195D48BB865}';
STORE_MOUNT_GUID_STRING = '{C1115848-46FD-4976-BDE9-D79448457004}';
FATFS_MOUNT_GUID_STRING = '{169E1941-04CE-4690-97AC-776187EB67CC}';
CDFS_MOUNT_GUID_STRING = '{72D75746-D54A-4487-B7A1-940C9A3F259A}';
UDFS_MOUNT_GUID_STRING = '{462FEDA9-D478-4b00-86BB-51A8E3D10890}';
CDDA_MOUNT_GUID_STRING = '{BA6B1343-7980-4d0c-9290-762D527B33AB}';
FSD_MOUNT_GUID_STRING = '{8C77EDE8-47B9-45ae-8BC9-86E7B8D00EDD}';
BOOTFS_MOUNT_GUID_STRING = '{9A1E75E9-B24A-4838-B448-C026CA01323C}';
ROOTFS_MOUNT_GUID_STRING = '{0473DD50-D4CA-4ae2-BF5C-F09FD611C1CF}';
ROMFS_MOUNT_GUID_STRING = '{945E7231-17C0-4753-AD4E-BEFCA2FA6AE2}';
STOREMGR_DRIVER_GUID: GUID = '{14ACDEE6-5CF3-496b-B39D-8954C96DF002}';
STOREMGR_DRIVER_GUID_STRING = '{14ACDEE6-5CF3-496b-B39D-8954C96DF002}';
//*****************************************************************************/
//* attributes of a store */
STORE_ATTRIBUTE_READONLY = $00000001;
STORE_ATTRIBUTE_REMOVABLE = $00000002;
STORE_ATTRIBUTE_UNFORMATTED = $00000004;
STORE_ATTRIBUTE_AUTOFORMAT = $00000008;
STORE_ATTRIBUTE_AUTOPART = $00000010;
STORE_ATTRIBUTE_AUTOMOUNT = $00000020;
//* attributes for a partition */
PARTITION_ATTRIBUTE_EXPENDABLE = $00000001; // partition may be trashed
PARTITION_ATTRIBUTE_READONLY = $00000002; // partition is read-only
PARTITION_ATTRIBUTE_AUTOFORMAT = $00000004;
PARTITION_ATTRIBUTE_ACTIVE = $00000008;
PARTITION_ATTRIBUTE_BOOT = $00000008; // Active(DOS) == Boot(CE)
PARTITION_ATTRIBUTE_MOUNTED = $00000010;
//* some basic constants */
DEVICENAMESIZE = 8;
STORENAMESIZE = 32;
FILESYSNAMESIZE = 32;
FORMATNAMESIZE = 32;
PARTITIONNAMESIZE = 32;
PROFILENAMESIZE = 32;
FOLDERNAMESIZE = 32;
VOLUMENAMESIZE = 64;
FSDDESCSIZE = 32;
STORAGE_DEVICE_CLASS_BLOCK = $1;
STORAGE_DEVICE_CLASS_MULTIMEDIA = $2;
STORAGE_DEVICE_TYPE_PCIIDE = (1 shl 0);
STORAGE_DEVICE_TYPE_FLASH = (1 shl 1);
STORAGE_DEVICE_TYPE_ATA = (1 shl 2);
STORAGE_DEVICE_TYPE_ATAPI = (1 shl 4);
STORAGE_DEVICE_TYPE_PCCARD = (1 shl 5);
STORAGE_DEVICE_TYPE_CFCARD = (1 shl 6);
STORAGE_DEVICE_TYPE_SRAM = (1 shl 7);
STORAGE_DEVICE_TYPE_DVD = (1 shl 8);
STORAGE_DEVICE_TYPE_CDROM = (1 shl 9);
STORAGE_DEVICE_TYPE_USB = (1 shl 10);
STORAGE_DEVICE_TYPE_1394 = (1 shl 11);
STORAGE_DEVICE_TYPE_DOC = (1 shl 12);
STORAGE_DEVICE_TYPE_UNKNOWN = (1 shl 29);
STORAGE_DEVICE_TYPE_REMOVABLE_DRIVE = (1 shl 30); // Drive itself is removable
STORAGE_DEVICE_TYPE_REMOVABLE_MEDIA = (1 shl 31); // Just the media is removable ex. CDROM, FLOPPY
STORAGE_DEVICE_FLAG_READWRITE = (1 shl 0);
STORAGE_DEVICE_FLAG_READONLY = (1 shl 1);
STORAGE_DEVICE_FLAG_TRANSACTED = (1 shl 2);
STORAGE_DEVICE_FLAG_MEDIASENSE = (1 shl 3); // Device requires media sense calls
STORAGE_DEVICE_FLAG_XIP = (1 shl 4);
CE_VOLUME_ATTRIBUTE_READONLY = $1;
CE_VOLUME_ATTRIBUTE_HIDDEN = $2;
CE_VOLUME_ATTRIBUTE_REMOVABLE = $4;
CE_VOLUME_ATTRIBUTE_SYSTEM = $8;
CE_VOLUME_ATTRIBUTE_BOOT = $10;
CE_VOLUME_TRANSACTION_SAFE = $1; // Performs transaction safe operations
CE_VOLUME_FLAG_TRANSACT_WRITE = $2;
CE_VOLUME_FLAG_WFSC_SUPPORTED = $4;
CE_VOLUME_FLAG_LOCKFILE_SUPPORTED = $8;
CE_VOLUME_FLAG_NETWORK = $10;
CE_VOLUME_FLAG_STORE = $20;
CE_VOLUME_FLAG_RAMFS = $40;
CE_VOLUME_FLAG_FILE_SECURITY_SUPPORTED = $80; // Persistent file and directory security descriptors
CE_VOLUME_FLAG_64BIT_FILES_SUPPORTED = $100; // 64-bit file sizes and offsets
STOREAPIDLL = 'coredll';
type
SECTORNUM = ULONGLONG;
//****************************************************************************
STORAGEDEVICEINFO = record
cbSize: DWORD;
szProfile: array[0..PROFILENAMESIZE-1] of TCHAR;
dwDeviceClass: DWORD;
dwDeviceType: DWORD;
dwDeviceFlags: DWORD;
end;
tagSTORAGEDEVICEINFO = STORAGEDEVICEINFO;
TSTORAGEDEVICEINFO = STORAGEDEVICEINFO;
PSTORAGEDEVICEINFO = ^STORAGEDEVICEINFO;
//*****************************************************************************/
// information about a store */
STOREINFO = record
cbSize: DWORD; // sizeof(PD_STOREINFO)
szDeviceName: array[0..DEVICENAMESIZE-1] of TCHAR;
szStoreName: array[0..STORENAMESIZE-1] of TCHAR;
dwDeviceClass: DWORD;
dwDeviceType: DWORD;
sdi: STORAGEDEVICEINFO;
dwDeviceFlags: DWORD;
snNumSectors: SECTORNUM; // number of sectors on store
dwBytesPerSector: DWORD; // number of bytes per sector
snFreeSectors: SECTORNUM; // number of unallocated sectors
snBiggestPartCreatable: SECTORNUM; // biggest partition currently creatable
ftCreated: FILETIME; // last time store was formatted
ftLastModified: FILETIME; // last time partition table was modified
dwAttributes: DWORD; // store attributes, see below
dwPartitionCount: DWORD; // Number of Partitions
dwMountCount: DWORD; // Number of partitions that have been mounted
end;
tagSTOREINFO = STOREINFO;
TSTOREINFO = STOREINFO;
PSTOREINFO = ^STOREINFO;
//***************************************************************************
// information about a partition
PARTINFO = record
cbSize: DWORD; // sizeof(PD_PARTINFO)
szPartition: array[0..PARTITIONNAMESIZE-1] of TCHAR; // name of partition
szFileSys: array[0..FILESYSNAMESIZE-1] of TCHAR;
szVolumeName: array[0..VOLUMENAMESIZE-1] of TCHAR;
snNumSectors: SECTORNUM; // number of sectors in partition
ftCreated: FILETIME; // creation time of partition
ftLastModified: FILETIME; // last time partition was modified
dwAttributes: DWORD; // partition attributes, see below
bPartType: BYTE;
end;
tagPARTINFO = PARTINFO;
TPARTINFO = PARTINFO;
PPARTINFO = ^PARTINFO;
//****************************************************************************/
STORAGECONTEXT = record
cbSize: DWORD;
StoreInfo: STOREINFO;
PartInfo: PARTINFO;
dwFlags: DWORD;
end;
tagSTORAGECONTEXT = STORAGECONTEXT;
TSTORAGECONTEXT = STORAGECONTEXT;
PSTORAGECONTEXT = ^STORAGECONTEXT;
CE_VOLUME_INFO = record
cbSize: DWORD;
dwAttributes: DWORD;
dwFlags: DWORD;
dwBlockSize: DWORD;
szStoreName: array[0..STORENAMESIZE-1] of TCHAR;
szPartitionName: array[0..PARTITIONNAMESIZE-1] of TCHAR;
end;
_CE_VOLUME_INFO = CE_VOLUME_INFO;
PCE_VOLUME_INFO = ^CE_VOLUME_INFO;
LPCE_VOLUME_INFO = ^CE_VOLUME_INFO;
CE_VOLUME_INFO_LEVEL = (CeVolumeInfoLevelStandard);
_CE_VOLUME_INFO_LEVEL = CE_VOLUME_INFO_LEVEL;
function IsStorageManagerRunning: BOOL; cdecl; external STOREAPIDLL name 'IsStorageManagerRunning';
// Storage Management API's
function OpenStore(szDeviceName: LPCTSTR): HANDLE; cdecl; external STOREAPIDLL name 'OpenStore';
function DismountStore(hStore: HANDLE): BOOL; cdecl; external STOREAPIDLL name 'DismountStore';
function FormatStore(hStore: HANDLE): BOOL; cdecl; external STOREAPIDLL name 'FormatStore';
function FindFirstStore(pStoreInfo: PSTOREINFO): HANDLE; cdecl; external STOREAPIDLL name 'FindFirstStore';
function FindNextStore(hSearch: HANDLE; pStoreInfo: PSTOREINFO): BOOL; cdecl; external STOREAPIDLL name 'FindNextStore';
function FindCloseStore(hSearch: HANDLE): BOOL; cdecl; external STOREAPIDLL name 'FindCloseStore';
function GetStoreInfo(hStore: HANDLE; pStoreInfo: PSTOREINFO): BOOL; cdecl; external STOREAPIDLL name 'GetStoreInfo';
// Partition Management API's
function CreatePartition(hStore: HANDLE; szPartitionName: LPCTSTR; snNumSectors: SECTORNUM): BOOL; cdecl; external STOREAPIDLL name 'CreatePartition';
function CreatePartitionEx(hStore: HANDLE; szPartitionName: LPCTSTR; bPartType: BYTE; snNumSectors: SECTORNUM): BOOL; cdecl; external STOREAPIDLL name 'CreatePartitionEx';
function DeletePartition(hStore: HANDLE; szPartitionName: LPCTSTR): BOOL; cdecl; external STOREAPIDLL name 'DeletePartition';
function OpenPartition(hStore: HANDLE; szPartitionName: LPCTSTR): HANDLE; cdecl; external STOREAPIDLL name 'OpenPartition';
function MountPartition(hPartition: HANDLE): BOOL; cdecl; external STOREAPIDLL name 'MountPartition';
function DismountPartition(hPartition: HANDLE): BOOL; cdecl; external STOREAPIDLL name 'DismountPartition';
function RenamePartition(hPartition: HANDLE; szNewName: LPCTSTR): BOOL; cdecl; external STOREAPIDLL name 'RenamePartition';
function SetPartitionAttributes(hPartition: HANDLE; dwAttrs: DWORD): BOOL; cdecl; external STOREAPIDLL name 'SetPartitionAttributes';
function GetPartitionInfo(hPartition: HANDLE; pPartInfo: PPARTINFO): BOOL; cdecl; external STOREAPIDLL name 'GetPartitionInfo';
function FormatPartition(hPartition: HANDLE): BOOL; cdecl; external STOREAPIDLL name 'FormatPartition';
function FormatPartitionEx(hPartition: HANDLE; bPartType: BYTE; bAuto: BOOL): BOOL; cdecl; external STOREAPIDLL name 'FormatPartitionEx';
function FindFirstPartition(hStore: HANDLE; pPartInfo: PPARTINFO): HANDLE; cdecl; external STOREAPIDLL name 'FindFirstPartition';
function FindNextPartition(hSearch: HANDLE; pPartInfo: PPARTINFO): BOOL; cdecl; external STOREAPIDLL name 'FindNextPartition';
function FindClosePartition(hSearch: HANDLE): BOOL; cdecl; external STOREAPIDLL name 'FindClosePartition';
function CeGetVolumeInfoW(pszRootPath: LPCWSTR; InfoLevel: CE_VOLUME_INFO_LEVEL;
lpVolumeInfo: LPCE_VOLUME_INFO): BOOL; cdecl; external STOREAPIDLL name 'CeGetVolumeInfoW';
function CeGetVolumeInfo(pszRootPath: LPCWSTR; InfoLevel: CE_VOLUME_INFO_LEVEL;
lpVolumeInfo: LPCE_VOLUME_INFO): BOOL; cdecl; external STOREAPIDLL name 'CeGetVolumeInfoW';
implementation
end.