📄 atadisk.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.
//
/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
Module Name:
atadisk.h
Abstract:
This module contains the function prototypes and constant, type,
global data and structure definitions for the WINCE AT Attachment
disk driver.
--*/
#ifndef _ATADISK_H_
#define _ATADISK_H_
#ifdef __cplusplus
extern "C" {
#endif
#define DISK_IO_TIME_OUT 10000
#define REQUEST_TIME_OUT 30000
#define BYTES_PER_SECTOR 512
//
// When we're resetting the controller, we have to go through some states
// as various operations finish (that is, interrupt). Here's the states
// in order.
//
#define RESET_NOT_RESETTING 0
#define RESET_FIRST_DRIVE_SET 1
#define RESET_FIRST_DRIVE_RECALIBRATED 2
#define RESET_SECOND_DRIVE_SET 3
#define RESET_SECOND_DRIVE_RECALIBRATED 4
#define ATADISK_FLAG_TRY8BIT (1 << 0)
#define ATADISK_FLAG_NO_MODIFIER (1 << 1)
#define ATADISK_FLAG_MEMORY_MAPPED (1 << 2)
#define ATADISK_FLAG_SUSPENDED (1 << 3)
//
// Structure to keep track of a disk
//
typedef struct _DISK {
struct _DISK * d_next;
CARD_CLIENT_HANDLE d_hPcmcia; // PCMCIA client driver handle
CARD_SOCKET_HANDLE d_hSock; // socket the disk card is in.
CARD_WINDOW_HANDLE d_hATAReg; // Handle to ATA I/O register window
volatile UCHAR* d_pATAReg;
CARD_WINDOW_HANDLE d_hATARegAlt;// Handle to ATA alternate reg window
volatile UCHAR* d_pATARegAlt;
CRITICAL_SECTION d_DiskCardCrit;// guard access to global state and card
UCHAR d_DiskStatus; // ATA status register at interrupt time
HANDLE d_IRQEvent;
DISK_INFO d_DiskInfo; // for DISK_IOCTL_GET/SETINFOs
BOOL d_fLBAMode; // TRUE => logical block addressing supported
BOOL d_f16Bit;
DWORD d_OpenCount; // open ref count
LPWSTR d_ActivePath; // Active key registry path
DWORD d_Flags; // Various registry setable flags.
HANDLE hPwrEvent;
DWORD lPwrOff;
} DISK, * PDISK;
//
// Global Variables
//
extern DWORD v_MemGran; // memory granularity (usually 1)
extern CRITICAL_SECTION v_DiskCrit; // guard access to disk structure list
extern PDISK v_DiskList;
extern REGISTERCLIENT v_pfnCardRegisterClient;
extern DEREGISTERCLIENT v_pfnCardDeregisterClient;
extern GETFIRSTTUPLE v_pfnCardGetFirstTuple;
extern GETNEXTTUPLE v_pfnCardGetNextTuple;
extern GETTUPLEDATA v_pfnCardGetTupleData;
extern GETPARSEDTUPLE v_pfnCardGetParsedTuple;
extern REQUESTWINDOW v_pfnCardRequestWindow;
extern RELEASEWINDOW v_pfnCardReleaseWindow;
extern MAPWINDOW v_pfnCardMapWindow;
extern REQUESTCONFIG v_pfnCardRequestConfiguration;
extern RELEASECONFIG v_pfnCardReleaseConfiguration;
extern REQUESTIRQ v_pfnCardRequestIRQ;
extern RELEASEIRQ v_pfnCardReleaseIRQ;
extern REQUESTSOCKETMASK v_pfnCardRequestSocketMask;
extern RELEASESOCKETMASK v_pfnCardReleaseSocketMask;
extern GETSTATUS v_pfnCardGetStatus;
//
// Global functions
//
extern VOID CloseDisk(PDISK pDisk);
extern DWORD DoDiskIO(PDISK pDisk, DWORD Opcode, PSG_REQ pSG);
extern DWORD GetDiskInfo(PDISK pDisk, PDISK_INFO pInfo);
extern DWORD SetDiskInfo(PDISK pDisk, PDISK_INFO pInfo);
extern DWORD InitDisk(PDISK pDisk, LPTSTR ActiveKey);
extern VOID PcmciaIntr(DWORD Context);
extern BOOL IsValidDisk(PDISK pDisk);
extern BOOL ATAInitController(PDISK pDisk);
//
// Macros
//
#define IOREG(pDisk, RegName) (pDisk->d_pATAReg[RegName])
#define ALT_REG(pDisk, RegName) (pDisk->d_pATARegAlt[RegName])
#ifdef DEBUG
//
// Debug zones
//
#define ZONE_ERROR DEBUGZONE(0)
#define ZONE_WARNING DEBUGZONE(1)
#define ZONE_FUNCTION DEBUGZONE(2)
#define ZONE_INIT DEBUGZONE(3)
#define ZONE_PCMCIA DEBUGZONE(4)
#define ZONE_IO DEBUGZONE(5)
#endif // DEBUG
#ifdef __cplusplus
}
#endif
#endif // _ATADISK_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -